2017-02-19 7 views
0

im новый для 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; 
} 

Проблема заключается в том, что все, что я типа в моей "категории" поле его вернуть, что его не правильной категории:/

Я искал свою проблему, но ничего не нашел: (Может кто-нибудь объяснить мне, что я делаю неправильно :)? Благодаря!

+0

Как вы связали валидатор с контекстом? –

ответ

0

Этот ответ должен быть в разделе комментариев, но я не могу пока оставить комментарий:

Строка равенства не работает с == operateur.

Для того, чтобы сравнить их, вы должны использовать String.equals(String anotherString).

Используя ==, вы подтверждаете, что две строки одинаковы в памяти. Equals сравнивают значение String.

Надеюсь, это поможет

+0

... стыд на мне. cpp привычки, большое спасибо! – crooked

Смежные вопросы