Java 如何在JSP中访问Spring3MVC验证程序结果而不使用表单taglib
我有一个使用jsp标记库的简单Spring3MVC表单。我需要根据表单中的字段是否有任何与之相关联的错误来添加一个类。以下是我的HTML的一个片段:Java 如何在JSP中访问Spring3MVC验证程序结果而不使用表单taglib,java,jsp,data-binding,spring-mvc,Java,Jsp,Data Binding,Spring Mvc,我有一个使用jsp标记库的简单Spring3MVC表单。我需要根据表单中的字段是否有任何与之相关联的错误来添加一个类。以下是我的HTML的一个片段: <div class="control-group error"> <!-- HERE: binding.hasErrors() ? "error" : "" --> <form:label path="username" cssClass="control-label">User Name</fo
<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属性有两个类“controlgroup”和“error”。只有当该字段有一个与之相关联的错误时,我才需要添加错误类。我知道WebDataBinder以某种方式包含在页面中,但我不知道如何访问它。本质上,我只是想执行一些好的旧方式,但我如何访问页面中的活页夹?您是否尝试过标记(我不明白您所说的“不使用表单taglib”是什么意思)
评论后编辑:
在
标记内部有错误
变量(请参阅)绑定到实际绑定错误。您可以通过errors.hasfielderors(fieldName)
检查字段是否有错误
而真正不带任何标记的获取字段错误的方法是
requestScope['org.springframework.validation.BindingResult.yourCommandName'].hasFieldErrors('username')
…虽然这有点晦涩难懂,但我认为它更简单,因为这是一行代码,如果我像任何理智的Java开发人员一样使用scriplets,它会是什么样子。Taglibs需要死,然后再死一些。它们太可怕了,我不敢相信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>
这只是总体上看错误。我需要知道该对象上的字段是否有错误。我讨厌塔格利布。JSP没有它们就更简单了。我的意思是,我可以不使用spring:或form:直接从JSP中访问BindingResults吗。Spring使用所有标记都知道的硬编码属性将BindingResults放入页面中。那么什么是秘密名称请求。getRequestParmeter(“???????”)?您可以在这个标记中使用
错误。hasFieldErrors(fieldName)
(尽管如此,我建议使用标记),请参阅我的编辑。感谢您的回答,但不幸的是,它不能与3.0一起使用,因为没有定义错误。我找到了一个不需要taglib的解决方案,因为它们太可怕了,而且我不敢相信Java开发人员仍然认为他们没有浪费时间。我找到了一个更简单的方法。所以我用小字体添加了“晦涩的方法;”)这很有效。请注意,user
这里是您的数据模型类的名称。
<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 : ''}