<label th:for="${#ids.prev(‘features‘)}" th:text="#{${‘seedstarter.feature.‘ + feat}}">Heating</label>
<select th:field="*{type}">
<option th:each="type : ${allTypes}"
th:value="${type}"
th:text="#{${‘seedstarter.type.‘ + type}}">Wireframe</option>
</select>
15、预处理:<select th:field="*{rows[__${rowStat.index}__].variety}">而不使用<select th:field="*{rows[rowStat.index].variety}">,因为spring el不会计算数组索引中的变量或者表达式。
16、错误显示:<input type="text" th:field="*{datePlanted}" th:class="${#fields.hasErrors(‘datePlanted‘)}? fieldError" />
<ul>
<li th:each="err : ${#fields.errors(‘datePlanted‘)}" th:text="${err}" />
</ul>
<input type="text" th:field="*{datePlanted}" />
<p th:if="${#fields.hasErrors(‘datePlanted‘)}" th:errors="*{datePlanted}">Incorrect date</p>
<input type="text" th:field="*{datePlanted}" class="small" th:errorclass="fieldError" />
<ul th:if="${#fields.hasErrors(‘*‘)}">
<li th:each="err : ${#fields.errors(‘*‘)}" th:text="${err}">Input is incorrect</li>
</ul>
全局错误:
<ul th:if="${#fields.hasErrors(‘global‘)}">
<li th:each="err : ${#fields.errors(‘global‘)}" th:text="${err}">Input is incorrect</li>
</ul>
在form外显示错误:
<div th:errors="${myForm}">...</div>
<div th:errors="${myForm.date}">...</div>
<div th:errors="${myForm.*}">...</div>
<div th:if="${#fields.hasErrors(‘${myForm}‘)}">...</div>
<div th:if="${#fields.hasErrors(‘${myForm.date}‘)}">...</div>
<div th:if="${#fields.hasErrors(‘${myForm.*}‘)}">...</div>
<form th:object="${myForm}">
...
</form>
17、利用功能类转换:#conversions.convert(Object,Class),#conversions.convert(Object,String)
18、渲染模板的片段,常用于ajax,返回一部分文本做替换使用。
在ViewBean中指定片段:
<bean name="content-part" class="org.thymeleaf.spring3.view.ThymeleafView">
<property name="templateName" value="index" />
<property name="fragmentSpec">
<bean class="org.thymeleaf.standard.fragment.StandardDOMSelectorFragmentSpec"
c:selectorExpression="content" />
</property>
</bean>
@RequestMapping("/showContentPart")
public String showContentPart() {
...
return "content-part";//返回上面定义的bean名称。
}
c:selectorExpression="content":需要在content节点加上th:fragment。
c:selectorExpression="#content" :完全基于html dom selector,无需th:fragment。
在controller中指定片段:
@RequestMapping("/showContentPart")
public String showContentPart() {
...
return "index :: content";
}
"index :: content"和"index ::#content"区别一样。
还可以返回带参数的片段:
@RequestMapping("/showContentPart")
public String showContentPart() {
...
return "index :: #content (‘myvalue‘)";
}