2016-05-19 92 views
0

讓我們有兩種形式支持類。Spring MVC + Thymeleaf複合形式支持beans

Person 
    - name (String) 
    - surname (String) 

Application 
    - reason (String) 
    - date (Date) 
    - person (Person) 

和使HTML表單用於Person對象像這樣的Thymeleaf片段:

<input name="name"/> 
<input name="surname"/> 

是否有posibility重用在這使得Application HTML形式與預期的結果的片段相同的片段:

<input name="reason"/> 
<input name="date"/> 
<input name="person.name"/> 
<input name="person.surname"/> 

換言之可以Thymeleaf形式片段被普遍的情況下使用時Person是頂層的形式支持bean,並且在它是其他形式支持bean的一部分的情況下?

回答

0

只需使用前綴並將其傳遞給您的模板。我希望你喜歡這個主意。在下面的代碼中,應用程序片段也可以作爲前綴幷包含在另一個表單中。我沒有測試過這些代碼。如果有什麼不對,請讓我知道。我在我的代碼中使用這樣的構造。

<th:block th:fragment="person"> 
    Name:<input type="text" th:field="*{__${prefix + 'name'}__}" /> 
    Surname:<input type="text" th:field="*{__${prefix + 'surname'}__}" /> 
</th:block> 

<th:block th:fragment="application"> 
    Reason:<input type="text" th:field="*{__${prefix + 'reason'}__}" /> 
    Date:<input type="text" th:field="*{__${prefix + 'date'}__}" /> 
    <div th:replace="fragments/forms :: person" th:with="prefix=${prefix +'person.'}"> 
</th:block>