我正在使用Spring 3.1.1.RELEASE。我有一个具有以下属性的模型
import javax.validation.constraints.Size;
@Size(max=15)
private String name;
我在我的控制器中验证模型正在运行
@RequestMapping(value = "/save", method = RequestMethod.POST)
public ModelAndView save(final Model model,
@Valid final MyForm myForm,
我希望“15”值来自属性文件而不是硬编码,但我不清楚这是否可能或如何完成。有什么想法吗?
答案 0 :(得分:1)
这是不可能的。在编译时添加作为max
属性的值提供的常量表达式。无法在运行时更改注释的值。因此,无法从您读取的属性文件中设置它
您可以做的是为您的班级创建并注册自己的Validator
。例如,
public class MyValidator implements Validator {
public void validate(Object target, Errors errors) {
MyObject obj = (MyObject) target;
int length = getProperties().get("max.size");
if (obj.name.length() > length) {
errors.rejectValue("name", "String length is bigger than " + length);
}
}
public boolean supports(Class<?> clazz) {
return clazz == MyOBject.class;
}
}