Java 列表的Spring验证不为空
我不明白问题的原因。我的模型中有一个列表,我想使用Spring和接口验证器来验证它 验证器:Java 列表的Spring验证不为空,java,spring,list,validation,spring-mvc,Java,Spring,List,Validation,Spring Mvc,我不明白问题的原因。我的模型中有一个列表,我想使用Spring和接口验证器来验证它 验证器: @Component public class OperationValidator implements Validator { @Override public boolean supports(Class<?> arg0) { return OperationList.class.equals(arg0); } @Override public void validate(
@Component
public class OperationValidator implements Validator {
@Override
public boolean supports(Class<?> arg0) {
return OperationList.class.equals(arg0);
}
@Override
public void validate(Object obj, Errors err) {
OperationList opearationList = (OperationList) obj;
List<String> opers = opearationList.getOperations();
if(opers==null || opers.isEmpty()){
err.rejectValue("operations", "operationlist.oplist.empty");
}
}
有人能解释这些麻烦的原因吗?在tcp/ip监视器中,我看到记录_operations=on
当我标记复选框并且操作列表不是空的时候,一切都正常。还有一件有趣的事。在我的应用程序中,我有另一个用于文件上传的验证器。所以它工作得很好。
我使用hibernate验证程序v.5.1.3;弹簧v.4.1.6。服务器-tomcat 8我发现问题。
BindingResult参数始终直接位于带有@Value注释的参数之后
<sf:form method="post" commandName="operationsList" action="${pageContext.request.contextPath}/operation">
<p>
<sf:checkboxes element="li" path="operations" items="${list}" ></sf:checkboxes>
<sf:errors path="operations" cssStyle="color: #ff0000"></sf:errors>
</p>
<input type="submit" value="Go" />
@RequestMapping(value = "/operation", method = RequestMethod.POST)
public ModelAndView processOperation( @ModelAttribute @Valid OperationList opList, HttpSession session,
BindingResult result) {
ModelAndView mav =new ModelAndView();
if (result.hasErrors()) {
mav.setViewName("index");
} else {
session.setAttribute("operations", opList);
mav.setViewName("switchfile");
}
return mav;
}
@Component
public class OperationValidator implements Validator {
@Override
public boolean supports(Class<?> arg0) {
return OperationList.class.equals(arg0);
}
@Override
public void validate(Object obj, Errors err) {
OperationList opearationList = (OperationList) obj;
List<String> opers = opearationList.getOperations();
if(opers==null || opers.isEmpty()){
err.rejectValue("operations", "operationlist.oplist.empty");
}
}
the request sent by the client was syntactically incorrect.