2017-10-25 19 views
7

Utworzono niestandardową bibliotekę znaczników ze Spring MVC, JSP i Tyles, więc mam kilka plików .tagx. Z nowym projektem zdecydowałem się wypróbować Spring Boot i Thymelaf, ale chciałbym zachować moją własną bibliotekę ...Jak mogę użyć niestandardowej biblioteki znaczników w Thymeleaf i Spring Boot?

A jeśli jesteś w stanie stworzyć własną bibliotekę znaczników za pomocą thymleaf? Lub czy mogę zaimportować moją niestandardową bibliotekę znaczników w jakikolwiek sposób?

EDIT

dodam jakiś kawałek kodu, aby być bardziej jasne. Następujące używane tagi to moje niestandardowe tagi. Więc zawarte wewnątrz JSP z xmlns:form="urn:jsptagdir:/WEB-INF/tags/form"

<form:create id="fu_utente" modelAttribute="utente" path="/utente" > 
      <div class="row"> 
       <div class="col-md-12 text-center"> 
        <h1 class="fa fa-user-plus" style="color:green;"><b>&#160;&#160;Stai creando un nuovo utente di tipo: <var class="varFont">&#160;${utente.ruolo}</var></b></h1> 
       </div> 
      </div> 
       <div class="row"> 
        <div class="col-xs-12 col-sm-12 col-md-4 col-md-offset-2"> 
         <field:input field="nome" id="c_utente_nome" required="true"/> 
        </div> 
        <div class="col-xs-12 col-sm-12 col-md-4"> 
         <field:input field="userName" id="c_utente_username" min="5" max="15" required="true"/> 
        </div> 
        <div class="col-xs-12 col-sm-12 col-md-8 col-md-offset-2"> 
         <field:input field="email" id="c_Utente_email" required="true" validationRegex="^[a-z0-9_\+-]+(\.[a-z0-9_\+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,4})$"/> 
        </div> 
        <div class="col-xs-12 col-sm-12 col-md-4 col-md-offset-2"> 
         <field:input field="nuovaPassword" id="c_utente_password" min="6" max="15" required="true" type="password"/> 
        </div> 
        <div class="col-xs-12 col-sm-12 col-md-4"> 
         <field:input field="confermaNuovaPassword" id="c_utente_confirmPassword" required="true" type="password"/> 
        </div> 
        </div> 
       </div> 

</form> 

Efektem tej strony objęta jest standardową stronę HTML z formularzem, niektóre pola i etykiety wewnątrz niej i przycisk submit ..

W ten sposób ja umie szybko napisać wiele kodów html. Na przykład zamiast pisać <label>..... </label><input....../> dla każdego pola, mogę napisać tylko <field:input......> używając również internacjonalizacji.

Chciałbym mieć (i myślę, że może być bardzo przydatny) to samo w Thymeleaf.

W przeciwnym razie, jeśli znasz sposobu korzystania Thymeleaf uniknąć zapisać kody i czas, proszę mi powiedzieć ..

Odpowiedz

2

użyłem następujących jako rodzaj roztworu/obejścia. W tej chwili stworzyłem tylko 2 proste tagi, nie jestem pewien, czy jest to dobry sposób na implementację bardziej złożonych tagów.

WEJŚCIE TAG

<!DOCTYPE html> 
<html xmlns:th="http://www.thymeleaf.org"> 
<body> 
    <section th:fragment="input(name, value, type, required)" class="form-group" th:switch="${required}"> 
     <label th:text="#{${name}}" th:for="${name}" class="control-label"></label> 
     <input th:case="true" th:type="${type}" th:id="${name}" th:name="${name}" th:value="${value}" class="form-control" required="required"/> 
     <input th:case="false" th:type="${type}" th:id="${name}" th:name="${name}" th:value="${value}" class="form-control"/> 
    </section> 
</body> 
</html> 

WYŚWIETLACZ TAG

<!DOCTYPE html> 
<html xmlns:th="http://www.thymeleaf.org"> 
<body> 
    <section th:fragment="display(name, value)" class="form-group"> 
     <label th:text="#{${name}}" th:for="${name}" class="control-label"></label> 
     <div class="box" th:id="${name}" th:text="${value}"></div> 
    </section> 
</body> 
</html> 

Następnie użyłem tych 2 znaczniki przekazując parametry, które chcę podoba:

<section th:replace="~{/tags/input :: input(username, *{username}, text, true)}"></section> 

i

<section th:replace="~{/tags/display :: display(nome, *{nome})}"></section> 
Powiązane problemy