Rya*_*yan 4 validation spring spring-mvc wizard
我开始研究如何在Spring中为类似向导的表单创建一个控制器,并且遇到了AbstractWizardFormController,我很快注意到它已被弃用.
然后我进一步挖了一下,找到了如何用Spring 3做类似的事情.这个例子虽然没有做任何类型的验证(例如via @Valid),所以我想知道如何验证向导的每一步?
是否有可能每个步骤都有自己的支持Form对象,然后用于@SessionAttributes存储它们的值,以便在调用最终提交时(可能在表单的最后一页)?
谢谢你的帮助.
(PS:不需要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 {}
}
Run Code Online (Sandbox Code Playgroud)
您可以通过提供标记接口来表示向导步骤,从而利用JSR-303支持验证组的事实.
然后,不是依赖@Valid注释,而是将Validator实例注入控制器并调用:
validator.validate(user, /*<step interface>.class*/);
Run Code Online (Sandbox Code Playgroud)
在您的processPage方法(引用链接问题中的Controller),然后
validator.validate(user, FinalStep.class);
Run Code Online (Sandbox Code Playgroud)
在你的processFinish电话中.
| 归档时间: |
|
| 查看次数: |
1631 次 |
| 最近记录: |