我有两个班(豆)
public class BeanOne {
@Min(1)
private Integer idBeanOne;
@NotBlank
private String nameBeanOne;
@NotNull
@Min(1)
private Integer idOther;
// ... Getters and Setters
}
public class BeanTwo {
@Min(1)
private Integer idBeanTwo;
@NotBlank
private String nameBeanTwo;
@NotNull
@Min(1)
private Integer idOtherTwo;
// ... Getters and Setters
}
Spring的控制器
// Method in Controller
@RequestMapping(value = "/name.html", method = RequestMethod.POST)
public @ResponseBody
Map<String, Object> submitInsert(@Valid BeanOne one,
@Valid BeanTwo two, BindingResult result) {
if (result.hasErrors()) {
// Errores
} else {
// :D
}
}
有什么办法可以验证两个或更多豆子吗?我已经成功验证了一个bean,但是我还没有成功验证两个或更多bean。我怎样才能做到这一点? 感谢:D 谢谢:D
答案 0 :(得分:0)
在尝试使用JSR303验证两个或更多bean之后,请参阅此解决方案。
public class BeanOne {
@Valid
private BeanTwo beanTwo;
// other beans to validate
@Valid
private BeanN beanN;
@Min(1)
private Integer idBeanOne;
@NotBlank
private String nameBeanOne;
@NotNull
@Min(1)
private Integer idOther;
// ... Getters and Setters
}
public class BeanTwo {
@Min(1)
private Integer idBeanTwo;
@NotBlank
private String nameBeanTwo;
@NotNull
@Min(1)
private Integer idOtherTwo;
// ... Getters and Setters
}
// Controller Spring
@Controller
public class XController {
@Autowired
private Validator validator;
@RequestMapping(value = "/name.html", method = RequestMethod.POST)
public @ResponseBody Map<String, Object>
submitInsert(BeanOne beanOne, BeanTwo beanTwo, BindingResult result) {
beanOne.setBeanTwo(beanTwo);
// beanOne.setBeabN(beanN);
validator.validate(beanOne, result);
if (result.hasErrors()) {
// Errores
} else {
// :D
}
}
// more code ...
}
但现在我有另一个问题:(
我有这个文件Messages.properties
typeMismatch.java.lang.Integer = Must specify an integer value.
typeMismatch.java.lang.Long = Must specify an integer value.
typeMismatch.java.lang.Float = Must specify a decimal value.
typeMismatch.java.lang.Double=Must specify a decimal value.
此文件可帮助我捕获异常,当字段需要数字时,用户输入文本
这适用于第一个bean(BeanOne),但不适用于嵌套bean(BeanTwo,BeanN)
我希望他们可以帮助我:D
感谢