spring - 使用 Spring 3 验证向导页面

标签 spring validation spring-mvc wizard

我开始研究如何在 Spring 中为类似向导的表单创建 Controller ,并遇到了 AbstractWizardFormController,我很快注意到它已被弃用。

然后我又挖了一点,发现how to accomplish something similar with Spring 3 .这个例子没有做任何类型的验证(例如通过 @Valid ),所以我想知道如何验证向导的每个步骤?

是否有可能每个步骤都有自己的支持 Form 对象,然后使用 @SessionAttributes在调用最终提交时存储它们的值(大概在表单的最后一页上)?

谢谢你的帮助。

(P.S.:不需要 WebFlow 的解决方案是理想的。)

最佳答案

我不知道用@Valid 注解解决这个问题的方法,但您应该能够利用 JSR-303 验证来完成此操作。作为一个有点做作的例子:

public class User {
    @NotNull(message = "First name can't be blank", groups = {Step1.class, FinalStep.class})
    private String firstName;

    @NotNull(message = "Last name can't be blank", groups = {Step1.class, FinalStep.class})
    private String lastName;

    @NotNull(message = "Email can't be blank", groups = {Step1.class, FinalStep.class})
    private String emailAddress;

    @NotNull(message = "Please provide a valid address", groups = {Step2.class, FinalStep.class})
    private Address address;

    // getters/setters...

    public interface Step1 {}
    public interface Step2 {}
    public interface FinalStep {}
}

您可以通过提供标记接口(interface)来表示您的向导步骤,从而利用 JSR-303 支持验证组这一事实。

然后,不要依赖 @Valid 注释,而是将 Validator 实例注入(inject)到您的 Controller 中并调用:
validator.validate(user, /*<step interface>.class*/);

在您的 processPage 方法中(在您的链接问题中引用 Controller ),然后
validator.validate(user, FinalStep.class);

在您的 processFinish 电话中。

关于spring - 使用 Spring 3 验证向导页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6738122/

相关文章:

java - 突然我的 spring.xml 不会实例化我的类并且发生错误异常

spring - SpEL可以与spring xml配置中的import语句一起使用吗

html - 如何对验证的输入[类型 ="submit"] 的值进行编码

javascript - 过滤文本字段数值的正确方法是什么?

java - 不验证@RequestParam required = false

javascript - 如何使用 spring 和 jsp 在列表中显示上传的文档

javascript - 如何使用 JavaScript 验证联系表单?

java - Spring Bean路径错误

java - Spring Security中如何保证同一个账号不被两个不同的人同时登录?

java - Spring MVC 绑定(bind)到错误的字段