仅当字段为非空时才打印@NotBlank消息

时间:2014-09-25 09:32:26

标签: java spring jsp

我使用Spring mvc构建了一个表单验证系统。 这是我的对象用户

public class User{

    @NotEmpty   
    @NotBlank
    @Size(min=3,max=20)
    private String name;    
.....
}

到目前为止,如果您没有填写“名称”字段,则会收到3条消息:

  1. 可能不是空的
  2. 可能不是空白
  3. 尺寸必须介于3到20之间
  4. 例如,如果没有发送消息1,是否有办法获取消息2?

    我解释得更好:如果用户没有填写字段,我只想打印消息“可能不是空的”。然后,如果用户填写一个只有空格的字段,我想打印消息“可能不是空白”。 然后,如果字段被填充(然后不是空的)并且不包含空格(然后不是空白),我想打印大小消息。

    有没有办法用注释处理这个问题,或者我必须创建自己的验证器类?

    我在互联网上查了一下,但我找不到解决方案,可能是因为很难解释谷歌要找什么。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

您可以创建自己的注释并使用元约束@ReportAsSingleViolation。

查看这些网站

http://docs.jboss.org/hibernate/validator/4.0.1/reference/en/html/validator-customconstraints.html http://docs.jboss.org/hibernate/validator/4.0.1/reference/en-US/html/validator-customconstraints.html

所以你的代码看起来像

@ReportAsSingleViolation
@NotEmpty   
@NotBlank
@Length(min = 3, max = 20)
public @interface CustomAnnotation {

    public abstract String message() default "{customkey}";

    public abstract Class<?>[] groups() default {};

    public abstract Class<?>[] payload() default {};
}