[英]How to access Spring 3 MVC validator results in JSP without using form taglib
我有一個使用jsp taglibs的簡單的Spring 3 MVC表單。 我需要根據表單中的字段是否有任何與之關聯的錯誤來添加類。 這是我的HTML的snipet:
<div class="control-group error"> <!-- HERE: binding.hasErrors() ? "error" : "" -->
<form:label path="username" cssClass="control-label">User Name</form:label>
<div class="controls">
<form:input path="username" cssClass="span3"/>
<form:errors path="username" cssClass="help-inline" />
</div>
</div>
所以在第一行,class屬性有兩個類“control-group”和“error”。 我只需要在該字段有與之關聯的錯誤時添加錯誤類。 我知道WebDataBinder以某種方式包含在頁面中,但我不知道如何訪問它。 基本上我只是想執行一些好的舊時尚<%= binding.hasError()? “error”:“”%>,但如何訪問頁面中的活頁夾?
您是否嘗試過<spring:hasBindErrors>
標簽(我不明白您的意思是“不使用表單taglib”)?
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<spring:hasBindErrors name="yourCommandName">
<c:if test="${errors.hasFieldErrors('username')}">
<c:set var="errorClass" value="error" />
</c:if>
</spring:hasBindErrors>
<div class="control-group <c:out value='${errorClass}' />">
評論后編輯:
在<spring:hasBindErrors>
標記內部,存在綁定到實際綁定錯誤的errors
變量(請參閱Errors
接口 )。 您可以通過errors.hasFieldErrors(fieldName)
檢查字段是否有錯誤。
requestScope['org.springframework.validation.BindingResult.yourCommandName'].hasFieldErrors('username')
是一個非常模糊的方法來獲取沒有任何標記的字段錯誤requestScope['org.springframework.validation.BindingResult.yourCommandName'].hasFieldErrors('username')
...
雖然這有點模糊,但我覺得它更簡單,因為它是一條單行,如果我只是像任何理智的Java開發人員那樣使用scriplet就會是這樣。 Taglib需要死死模具,然后再死一些。 它們非常可怕,我無法相信Java開發人員仍然認為他們確實有所幫助,而不是浪費我們的全部時間。 PHP開發人員在我們使用這些東西時嘲笑我們。
<div class="control-group ${requestScope['org.springframework.validation.BindingResult.user'].hasFieldErrors('firstName') ? 'error' : ''}">
有一種更好的方法來獲取錯誤消息
<spring:hasBindErrors name="yourCommandName">
${errors.hasFieldErrors('userId') ? errors.getFieldError('userId').defaultMessage : ''}
</spring:hasBindErrors>
還有一個班輪
${requestScope['org.springframework.validation.BindingResult.user'].hasFieldErrors('emailId') ? requestScope['org.springframework.validation.BindingResult.user'].getFieldError('emailId').defaultMessage : ''}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.