【发布时间】: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