【问题标题】:Spring validation framework multiple model attributes error message not displayed on jspSpring验证框架多个模型属性错误消息不显示在jsp上
【发布时间】:2013-03-17 18:34:05
【问题描述】:

我正在尝试使用 spring 验证框架在一个操作上验证 2 个模型属性。目的是在单击“搜索”按钮时验证lookUpbean(搜索标准),然后验证结果bean,即一旦我们从服务中获取它的memberShipbean,以便我们可以在结果中的某些字段为空时向用户显示警告豆子。

<form:form method="POST" modelAttribute="lookupPageBean" id="lookupForm" name="lookupForm" 
action="lookupMembership.htm">

   <td class="error">
  <form:errors path="membershipNumber" />   

  <form:input class="medium-textbox" id="membershipNumber" path="membershipNumber" />

  <button type="submit" class="Active-button-small">

  <fmt:message key="button.go" />
  </button>`


@RequestMapping(method = RequestMethod.POST, value = URLMappingConstant.MEMBERSHIP_LOOKUP)

public String viewMembership(ModelMap modelMap, HttpServletRequest request, HttpServletResponse   response,

@ModelAttribute(UIConstant.LOOKUP_PAGE_BEAN) LookupPageBean lookupPageBean, BindingResult result,

@ModelAttribute(UIConstant.MEMBERSHIP_BEAN) MembershipPageBean membershipPageBean, BindingResult error) throws WebMTracksException 
{
 membershipValidator.validate(lookupPageBean, result);
membershipValidator.validate(membershipPageBean, error);

}

现在发生的事情是第一次验证工作正常,但是在第二次验证期间 错误消息未显示在生成的 jsp 上, 但是直到这个控制器层在“错误”绑定结果中才报告错误。

也在验证层中

 ValidationUtils.rejectIfEmpty(errors, UIConstant.BUSINESSNAME,ValidationMSGConstants.BUSINESS_NAME)

即使字段不为空,此方法也总是返回验证错误。

第一个问题是我们能否在一个操作中拥有多个模型属性。我在互联网上的某个地方读到它,但找不到任何相同的实现。请帮我解决这个问题。如果您能想到任何其他可行的解决方案来解决这个问题,也请告诉我,但我只想使用 spring 框架进行验证,因为这有助于维护应用程序的现有设计。

【问题讨论】:

  • 能分享一下Controller方法吗?如果您从另一个方法调用一个方法,两者都使用 BindingResults,则第二个方法将是报告给 JSP 的方法,这通常不会失败绑定,因为它已经通过了一次。
  • viewMembership 如上所示是我的控制器方法。另外,这两个 bean 的形式不同,它们是动作的一部分,而结果 jsp 的其他部分。
  • 另外,我没有从控制器中的另一个方法调用任何一个方法。但是控制器方法正在调用具有不同 bean 和绑定结果的 2 个不同的验证器方法

标签: java spring validation spring-mvc jsp-tags


【解决方案1】:

我认为您没有将多个模型属性绑定到同一个表单,我相信这就是您要问的。从 HTTP 的角度来看,我什至不确定该请求会是什么样子,因为我不相信 Spring 有办法解开所有 bean 的属性,尤其是在名称重叠的情况下。您可能需要考虑将 LookupPageBean 和 MembershipPageBean 包装到一个“表单 bean”中。

至于错误消息,您可能需要查看spring:bind 标签。它可能会执行您从第二个模型属性获取绑定错误所需的操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 2015-11-24
    • 2014-10-17
    相关资源
    最近更新 更多