Support

ValidationBean

package example.u2ware.springfield.part4.step1;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.validation.constraints.NotNull;

import lombok.Getter;
import lombok.Setter;

import org.hibernate.annotations.Type;
import org.joda.time.DateTime;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.format.annotation.NumberFormat;

import com.u2ware.springfield.config.Springfield;
import com.u2ware.springfield.config.Springfield.Strategy;

@Springfield(
        strategy=Strategy.JPA
)
@Entity
public class ValidationBean {

        @NotNull @Id
        private @Getter @Setter Integer intValue;

        private @Getter @Setter String stringValue;     

        @NotNull @NumberFormat(pattern="0.0000")
        private @Getter @Setter Float floatValue;       
        
        @NotNull @DateTimeFormat(pattern="yyyy-MM-dd")
        @Type(type="org.joda.time.contrib.hibernate.PersistentDateTime")
        private @Getter @Setter DateTime dateTimeValue; 

        @NotNull
        private @Getter @Setter EnumValue enumValue;    
}

ValidationBean

package example.u2ware.springfield.part4.step1;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Component;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;

import com.u2ware.springfield.controller.EntityValidatorImpl;

@Component
public class ValidationBeanValidator extends EntityValidatorImpl<ValidationBean,ValidationBean>{

        protected final Log logger = LogFactory.getLog(getClass());

        @Override
        public void create(ValidationBean target, Errors errors) {
                
                super.create(target, errors);

                ValidationUtils.rejectIfEmpty(errors, "stringValue", null, "empty");
                
                ValidationBean bean = (ValidationBean)target;
                if("NO".equalsIgnoreCase(bean.getStringValue())){
                        errors.rejectValue("stringValue" , null, "'NO' equals Ignore Case");
                }
        }
}

@Springfield

springfield 는 JSR-303 Bean Validation org.springframework.validation.Validator 를 함계 지원한다. CoC 에의해 org.springframework.validation.Validator Bean 이 Context 에 존재 한다면 이를 찾아서 실행한다.