不起作用的验证者

时间:2017-02-19 22:42:57

标签: java spring validation annotations

我是Java和Spring的新手。我正在使用Spring MVC Begginers Guide做我的第一个应用程序,我的“类别”字段验证器有问题。它无法正常工作.. Tbh它根本不起作用。

category.java

@Target( { METHOD, FIELD, ANNOTATION_TYPE })
@Retention(RUNTIME)
@Constraint(validatedBy = CategoryValidator.class)
@Documented
public @interface Category {
    String message() default "{com.packt.webstore.validator.Category.message}";
    Class<?>[] groups() default {};
    public abstract Class<? extends Payload>[] payload() default {};
    String[] allowedCategories() default {"Laptop","Tablet","Smartfon"};
}

CategoryValidator.java

public class CategoryValidator implements ConstraintValidator<Category, String> {
String[] allowedCategories;
public void initialize( Category constraintAnnotation ) {
    this.allowedCategories = constraintAnnotation.allowedCategories();
}
public boolean isValid( String value, ConstraintValidatorContext context ) {
    for( String category : allowedCategories ) {
        if( value == category ) {
            return false;
        }
    }
    return true;
}

问题是我在“类别”字段中输入的所有内容都返回了不正确的类别:/

我在谷歌上搜索我的问题,但没有发现任何东西:(有人可以解释我,我做错了什么:)?谢谢!

1 个答案:

答案 0 :(得分:0)

这个答案应该在评论部分,但我还不能发表评论:

字符串相等不适用于==操作。

您必须使用String.equals(String anotherString)来比较它们。

使用==,您只验证两个字符串在内存中是否相同。 等于比较String的值。

希望这有帮助