2017-10-25 36 views
7

Tôi đã tạo thư viện thẻ tùy chỉnh với Spring MVC, JSP và Tyles, vì vậy tôi có một số tệp .tagx. Với dự án mới, tôi quyết định thử Spring Boot và Thymelaf, nhưng tôi muốn giữ thư viện tùy chỉnh của mình ...Làm cách nào để sử dụng thư viện thẻ tùy chỉnh với Thymeleaf và Spring Boot?

Vì vậy, bạn có thể tạo thư viện thẻ tùy chỉnh bằng thymleaf không? Hoặc nếu tôi có thể nhập thư viện thẻ tùy chỉnh của mình theo bất kỳ cách nào?

EDIT

tôi thêm một số đoạn mã để được rõ ràng hơn. Các thẻ được sử dụng sau đây là các thẻ tùy chỉnh của tôi. Vì vậy, tôi bao gồm bên trong JSP với 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> 

Kết quả của trang này là một trang HTML tiêu chuẩn, với một hình thức, một số lĩnh vực và nhãn bên trong nó và một nút gửi ..

Bằng cách này tôi có thể viết nhanh rất nhiều mã html. Ví dụ thay vì viết <label>..... </label><input....../> cho mỗi trường, tôi chỉ có thể viết <field:input......> bằng cách sử dụng quốc tế hóa.

Tôi muốn có (và tôi nghĩ rằng có thể rất hữu ích) điều tương tự trong Thymeleaf.

Ngược lại, nếu bạn biết một phương pháp sử dụng Thymeleaf để tránh để lưu mã và thời gian, xin vui lòng cho tôi biết ..

Trả lời

2

tôi đã sử dụng sau đây như một loại dung dịch/workaround. Hiện tại tôi chỉ tạo 2 thẻ đơn giản, tôi không chắc đây có phải là cách hay để triển khai các thẻ phức tạp hơn không.

ĐẦU VÀO 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> 

DISPLAY 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> 

Sau đó, tôi sử dụng những 2 thẻ đi qua các thông số mà tôi muốn thích:

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

<section th:replace="~{/tags/display :: display(nome, *{nome})}"></section> 
Các vấn đề liên quan