0

我正在尝试使用弹簧验证框架在一个操作上验证 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 框架进行验证,因为这有助于维护应用程序的现有设计。

4

1 回答 1

0

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

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

于 2013-03-19T11:23:17.847 回答