java - Spring MVC 和 JSR 303

标签 java spring-mvc bean-validation

我正在使用 Spring 3 和 JSR 303。我有一个表单支持对象,其嵌套对象需要验证。在下面的示例中,我如何验证 formObject.getFoo().getBean()?当我运行下面的代码时,结果参数始终为空,即使 HTML 页面没有提交任何内容,此时验证应该失败。请注意,当我通过调用 validate(formObject.getFoo().getBean(), Bean.class) 手动验证它时,它会起作用(即验证失败)。

@Controller
public class FormController {
    @RequestMapping(method = RequestMethod.POST)
    public void process(HttpServletRequest request, @Valid FormObject formObject, BindingResult result) {
            ...
    }

    // This is the class that needs to be validated.
    public class Bean {
        @NotBlank
        private String name;
    }

    public class Foo {
        private Bean bean;
    }

    public class FormObject {
        private Foo foo;
    }
}

最佳答案

如果您希望验证向下级联到子对象,那么您必须在父对象的字段上放置@Valid 注释:

public class Bean {
    @NotBlank
    private String name;
}

public class Foo {
    @Valid
    private Bean bean;
}

public class FormObject {
    @Valid
    private Foo foo;
}

关于java - Spring MVC 和 JSR 303,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4187798/

相关文章:

java - 如何从属性文件获取值以在 springConfig.xml 中输入

java - jsonchema2pojo : How the minLength, maxLength 边界应用于生成的 Java Pojo 类?

java - @Positive Annotation 仍然取负值

java - 以螺旋顺序打印二维数组

java - 检索微调器选定的项目以在条件语句中使用

java - 为什么我的程序在运行时给出错误的输出?

java - 如何将 Apache Tomcat 5 中运行的 Java 应用程序迁移到 Apache Tomcat 7?

validation - 在 spring 3 mvc 上验证@PathVariable url 时出现问题

java - 使用 Spring 的 validator 接口(interface)在 Bean 验证中自定义消息

spring - 如何自定义 BigDecimal 的默认消息