2016-03-29 2 views
2

Как проверить jComboBox для пользователя, чтобы выбрать любой элемент, отличный от элемента по умолчанию?Hibernate validator for ComboBox

Мне нужно проверить, не выбрал ли пользователь какой-либо элемент. Таким образом, значение JComboBox будет «Пожалуйста, выберите scurity вопрос»

enter image description here

В моем классе модели,

@NotEmpty(message="Please fill the username field!") 
public String getUsername() { 
    return this.username; 
} 

public void setUsername(String username) { 
    this.username = username; 
} 

@NotEmpty(message="Please fill the password field!") 
public String getPassword() { 
    return this.password; 
} 

public void setPassword(String password) { 
    this.password = password; 
} 

public String getSeqQue() { 
    return this.seqQue; 
} 

public void setSeqQue(String seqQue) { 
    this.seqQue = seqQue; 
} 

Какой будет спящий режим валидатор аннотацию, чтобы добавить в getSeqQue(), чтобы проверить мой JComboBox?

ответ

1

Чтобы проверить ваш JComboBox с помощью специального сообщения, просто вы можете сделать валидатор ограничений.

Смотрите следующий пример:

MyModel.java

public class MyModel { 

    @ValidComboBox //this is the annotation which validates your combo box 
    private String question; 

    //getter and setter 
} 

ValidComboBox.java // аннотацию

import java.lang.annotation.*; 
import javax.validation.*; 

@Target({ ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE }) 
@Retention(RetentionPolicy.RUNTIME) 
@Constraint(validatedBy = ComboBoxValidator.class) 
@Documented 
public @interface ValidComboBox { 
String value = "Please select a security question"; 

String message() default "Please select a security question."; 

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

Class<? extends Payload>[]payload() default {}; 
} 

ComboBoxValidator.java

import javax.validation.*; 
public class ComboBoxValidator implements ConstraintValidator<ValidComboBox, String> { 

private String value; 

@Override 
public void initialize(ValidComboBox arg0) { 
    this.value = arg0.value; 

} 

@Override 
public boolean isValid(String question, ConstraintValidatorContext arg1) { 
    if(question.equalsIgnoreCase(value)){ 
     return false; 
    } 
    return true; 
} 
} 

Добавление элементов в JComboBox так:

JComboBox<String> jComboBox = new JComboBox<>(); 
jComboBox.addItem("Please select a scurity question"); 
jComboBox.addItem("Question 1"); 
jComboBox.addItem("Question 2"); 

И следующие строки необходимо добавить при выполнении действия для проверки:

ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory(); 
Validator validator = validatorFactory.getValidator(); 

String question = jComboBox.getSelectedItem().toString(); 
MyModel model = new MyModel(); 
model.setQuestion(model); 

Set<ConstraintViolation<MyModel>> constraintViolations = validator.validate(model); 

if (!constraintViolations.isEmpty()) { 
     String error = ""; 
     for (ConstraintViolation<MyModel> constraintViolation : constraintViolations) { 
       error += constraintViolation.getMessage(); 
       JOptionPane.showMessageDialog(null, error); 
     } 
} 

Он будет отображать Пожалуйста, выберите секретный вопрос, если вы попытаетесь отправить запрос без выбора вопроса.

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