簡體   English   中英

如何在不使用表單taglib的情況下訪問JSP中的Spring 3 MVC驗證器結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM