2009年7月7日

直接使用 Spring Modules Annotation Validation

Spring Modules
Annotation-Based Validation with the Spring Bean Validation Framework

// -- Slave.java --
import org.springmodules.validation.bean.conf.loader.annotation.handler.NotNull;

public class Slave {

@NotNull(message = "Not Null")
private String name;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

}

// -- Main.java --
import java.util.List;
import org.springframework.validation.DataBinder;
import org.springframework.validation.Errors;
import org.springframework.validation.FieldError;
import org.springmodules.validation.bean.BeanValidator;
import org.springmodules.validation.bean.conf.loader.annotation.AnnotationBeanValidationConfigurationLoader;
import org.springmodules.validation.bean.conf.loader.annotation.handler.CascadeValidation;
import org.springmodules.validation.bean.conf.loader.annotation.handler.Length;
import org.springmodules.validation.bean.conf.loader.annotation.handler.NotNull;
import org.springmodules.validation.bean.conf.loader.annotation.handler.Range;

public class Main {

@NotNull(message = "Not Null")
private String name;
@Length(min = 5, max = 10)
private String value;
@Range(min = 1, max = 100)
private int count;
@CascadeValidation
private Slave slave;

public int getCount() {
return count;
}

public void setCount(int count) {
this.count = count;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getValue() {
return value;
}

public void setValue(String value) {
this.value = value;
}

public Slave getSlave() {
return slave;
}

public void setSlave(Slave slave) {
this.slave = slave;
}

public static void main(String[] args) {
Main main = new Main();
main.setValue("v");
main.setSlave(new Slave());
BeanValidator bv = new BeanValidator(
new AnnotationBeanValidationConfigurationLoader());

DataBinder dataBinder = new DataBinder(main, "testBean");

Errors errors = dataBinder.getBindingResult();
bv.validate(main, errors);

List allErrors = errors.getAllErrors();
for (FieldError fieldError : allErrors) {
System.out.println(fieldError);
}

}
}

/*
Field error in object 'testBean' on field 'count': rejected value [0]; codes [Main.count[range].testBean.count,Main.count[range].count,Main.count[range].int,Main.count[range]]; arguments [Main@1457cb,1.0,100.0]; default message [range]
Field error in object 'testBean' on field 'name': rejected value [null]; codes [Main.name[not.null].testBean.name,Main.name[not.null].name,Main.name[not.null].java.lang.String,Main.name[not.null]]; arguments [Main@1457cb]; default message [not.null]
Field error in object 'testBean' on field 'value': rejected value [v]; codes [Main.value[length].testBean.value,Main.value[length].value,Main.value[length].java.lang.String,Main.value[length]]; arguments [Main@1457cb,5,10]; default message [length]
Field error in object 'testBean' on field 'slave.name': rejected value [null]; codes [Slave.name[not.null].testBean.slave.name,Slave.name[not.null].slave.name,Slave.name[not.null].name,Slave.name[not.null].java.lang.String,Slave.name[not.null]]; arguments [Slave@93dcd]; default message [Not Null]
*/

沒有留言:

網誌存檔