我使用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”的值来自属性文件,而不是硬编码的,但我不清楚,如果这是可能的,或者如何做。 有任何想法吗?
这是不可能的。 您提供作为一个值的常量表达式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;
}
}
看看Spring的验证框架 。