How to validate a jComboBox for user to select any item other than the default item?
I need to check whether the user didn't select any item. So the jComboBox value will be "Please select a scurity question"
In my model class,
@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;
}
What will be the hibernate validator annotation to add in getSeqQue() to validate my jComboBox?
To validate your JComboBox with custom message simply you can make custom constraint validator.
See following example:
MyModel.java
public class MyModel {
@ValidComboBox //this is the annotation which validates your combo box
private String question;
//getter and setter
}
ValidComboBox.java //annotation
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;
}
}
Add items to your jComboBox like this:
JComboBox<String> jComboBox = new JComboBox<>();
jComboBox.addItem("Please select a scurity question");
jComboBox.addItem("Question 1");
jComboBox.addItem("Question 2");
And following lines you need to add when you perform action to validate:
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);
}
}
It will display Please select a security question message if you try to send request without choosing question.