是否有可能带动@Size“最大”值从属性文件?(Is it possible to drive th

2019-10-30 02:24发布

我使用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”的值来自属性文件,而不是硬编码的,但我不清楚,如果这是可能的,或者如何做。 有任何想法吗?

Answer 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;
    }
}

看看Spring的验证框架 。



文章来源: Is it possible to drive the @Size “max” value from a properties file?