您可以一次綁定表單物件的一個屬性與數值,例如:
...
<spring:bind path="command.username">
名稱 <input type="text"
name="\${status.expression}"
value="\${status.value}"/><br>
</spring:bind>
<spring:bind path="command.password">
密碼 <input type="password"
name="\${status.expression}"
value="\${status.value}"/><br>
</spring:bind>
...
<spring:bind path="command.username">
名稱 <input type="text"
name="\${status.expression}"
value="\${status.value}"/><br>
</spring:bind>
<spring:bind path="command.password">
密碼 <input type="password"
name="\${status.expression}"
value="\${status.value}"/><br>
</spring:bind>
...
"expression"會顯示被綁定的屬性名稱,而value則顯示被綁定的屬性值。
或者是這麼綁定Command:
...
<spring:bind path="command">
名稱 <input type="text"
name="username"
value="\${command.username}"/><br>
密碼 <input type="password"
name="password"
value="\${command.password}"/><br>
</spring:bind>
...
<spring:bind path="command">
名稱 <input type="text"
name="username"
value="\${command.username}"/><br>
密碼 <input type="password"
name="password"
value="\${command.password}"/><br>
</spring:bind>
...
對於錯誤訊息,之前用BindException中的reject()方法,這個方法並不會區分特定欄位錯誤訊息,您可以使用rejectValue()方法來加入錯誤訊息:
rejectValue(String field, String errorCode,
Object[] errorArgs, String defaultMessage)
rejectValue(String field, String errorCode,
String defaultMessage)
Object[] errorArgs, String defaultMessage)
rejectValue(String field, String errorCode,
String defaultMessage)
rejectValue()的field參數讓您指定表單物件的屬性,errorCode參數指定資源檔案中的鍵(Key),errorArgs參數用於指定資源檔案中的佔位字元,而預設訊息則是使用於找不到資源檔案時所要呈現的預設訊息。一個使用例子如下:
....
public void ModelAndView(....,
BindException errors) throws Exception {
...
errors.rejectValue("username",
"error", null, "使用者名稱錯誤");
...
errors.rejectValue("password", "error", null, "密碼錯誤");
return new ModelAndView(
this.getFormView(), errors.getModel());
}
...
public void ModelAndView(....,
BindException errors) throws Exception {
...
errors.rejectValue("username",
"error", null, "使用者名稱錯誤");
...
errors.rejectValue("password", "error", null, "密碼錯誤");
return new ModelAndView(
this.getFormView(), errors.getModel());
}
...
如上面的程式片段中加入之訊息,可以使用綁定標籤來呈現訊息:
...
<spring:bind path="command.username">
名稱 <input type="text"
name="\${status.expression}"
value="\${status.value}"/><br>
<font color="red">\${status.errorMessage}</color>
</spring:bind>
<spring:bind path="command.password">
密碼 <input type="password"
name="\${status.expression}"
value="\${status.value}"/><br>
<font color="red">\${status.errorMessage}</color>
</spring:bind>
...
<spring:bind path="command.username">
名稱 <input type="text"
name="\${status.expression}"
value="\${status.value}"/><br>
<font color="red">\${status.errorMessage}</color>
</spring:bind>
<spring:bind path="command.password">
密碼 <input type="password"
name="\${status.expression}"
value="\${status.value}"/><br>
<font color="red">\${status.errorMessage}</color>
</spring:bind>
...
相應的錯誤訊息會綁定至相關的欄位上,如果同一個屬性上被綁定了錯誤訊息,則可以使用\${status.errorMessages}取出,可以搭配JSTL來輸出訊息,例如:
...
<spring:bind path="command.username">
名稱 <input type="text"
name="\${status.expression}"
value="\${status.value}"/><br>
<c:if test="\${status.error}">
<font color="red">
錯誤:<br>
<c:forEach items="\${status.errorMessages}"
var="error">
<c:out value="\${error}"/><br>
</c:forEach>
</font>
</c:if>
</spring:bind>
...
<spring:bind path="command.username">
名稱 <input type="text"
name="\${status.expression}"
value="\${status.value}"/><br>
<c:if test="\${status.error}">
<font color="red">
錯誤:<br>
<c:forEach items="\${status.errorMessages}"
var="error">
<c:out value="\${error}"/><br>
</c:forEach>
</font>
</c:if>
</spring:bind>
...
\${status.error}可以用於測試是否有錯誤訊息,也可以使用<spring:hasBindErrors>來決定是否輸出某些內容,例如:
...
<spring:hasBindErrors>
發現以下的錯誤,請更正。。。
......
</spring:hasBindErrors>
...
<spring:hasBindErrors>
發現以下的錯誤,請更正。。。
......
</spring:hasBindErrors>
...
或者您也可以不區分表單物件屬性,一次輸出所有的錯誤訊息,例如:
....
<spring:bind path="command.*">
<font color="red">
錯誤:<br>
<c:forEach items="\${status.errorMessages}"
var="error">
<c:out value="\${error}"/><br>
</c:forEach>
</font>
</spring:bind>
...
<spring:bind path="command.*">
<font color="red">
錯誤:<br>
<c:forEach items="\${status.errorMessages}"
var="error">
<c:out value="\${error}"/><br>
</c:forEach>
</font>
</spring:bind>
...