Java 多个视图、一个表单、不同的验证

Java 多个视图、一个表单、不同的验证,java,spring,spring-validator,Java,Spring,Spring Validator,我有几个jsp页面,每个页面都使用一个表单 -------------------page1-------------------------- <form:form modelAttribute="form" > <form:errors path="field1" class="error"/> <form:input path="field1" type="text"/> <form:form/>

我有几个jsp页面,每个页面都使用一个表单

-------------------page1--------------------------
    <form:form modelAttribute="form" >
       <form:errors path="field1" class="error"/>
       <form:input path="field1" type="text"/>
    <form:form/>
-------------------page2--------------------------    
    <form:form modelAttribute="form" >
       <form:errors path="field2" class="error"/>
       <form:input path="field2" type="text"/>
    <form:form/>
-------------------page3--------------------------
    <form:form modelAttribute="form" >
       <form:errors path="field1" class="error"/>
       <form:input path="field1" type="text"/>
       <form:errors path="field2" class="error"/>
       <form:input path="field2" type="text"/>
    <form:form/>

我的目标是实现所有这些东西的验证。因此,对于第一页,field1是必需的,但field2不是必需的。在最后一个字段中,所有字段都是必需的。

我也有类似的问题。如果jsp中的字段不是field1,则表单中的filed1为null。若在jsp中,且用户未填写,则表单中的filed1为空字符串

所以我做了定制的涂鸦@NotEmptyString

@Constraint(validatedBy = NotEmptyStringValidator.class)
@Target({  FIELD })
@Retention(RUNTIME)
public @interface NotEmptyString {
    String message() default "{validation.notEmptyString}";

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

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


public class NotEmptyStringValidator implements ConstraintValidator<NotEmptyString, String> {

    @Override
    public void initialize(NotEmptyString annotation) {

    }

    @Override
    public boolean isValid(String value, ConstraintValidatorContext ctx) {
        return value == null || !value.isEmpty();
    } 

}
@约束(validatedBy=NotEmptyStringValidator.class)
@目标({FIELD})
@保留(运行时)
public@interface NotEmptyString{
字符串消息()默认值“{validation.notEmptyString}”;
类[]组()默认值{};

类您是否尝试使用
@InitBinder
及其
setValidator()
方法

@InitBinder
public void initBinder( WebDataBinder binder )
{
    binder.setValidator( new ValidatorForPage1() );
}
您的
ValidatorForPage1
应该实现
org.springframework.validation.Validator
。在这种情况下,您有每个控制器的验证规则

@InitBinder
public void initBinder( WebDataBinder binder )
{
    binder.setValidator( new ValidatorForPage1() );
}