Spring / Webflow验证问题

时间:2011-07-04 12:25:26

标签: java spring validation spring-webflow

验证问题

当方法“注册”

时,我会运行验证

在网络流程中: ...

<transition on="registered" to="registeredAction" bind="true" validate="true" />

...

我的模型看起来像这样:

class User {
private String name;
private String surname;
...
private List <address> addresses;
...
public void validateRegistered (ValidationContext context) {
Context.getMessageContext MessageContext messages = ();

if (name == null) {
messages.addMessage (new MessageBuilder (.) error (). source ("name".) code (MessageCodes.Error.REQUIRED.) build ());
}
}

在地址类

Class Address {

private String street;
private String city;

public void validateRegistered (ValidationContext context) {
Context.getMessageContext MessageContext messages = ();

if (street == null) {
messages.addMessage (new MessageBuilder (.) error (). source ("street".) code (MessageCodes.Error.REQUIRED.) build ());
}
}

执行操作并在User类的验证器中获取错误,但不在Class Address

中获取错误

任何人都知道为什么会这样?

2 个答案:

答案 0 :(得分:5)

Spring只会将bean集上的验证调用为视图状态的模型。

以下内容仅验证user

<view-state id="something" view="something.jsp" model="user">
    <transition on="registered" to="registeredAction" bind="true" validate="true" />
</view-state>

您需要创建一个封装用户和地址的对象,并将其用作模型(并在其验证方法中调用UserAddress的验证方法)。

答案 1 :(得分:0)

另一个答案是正确的,关于WebFlow只验证一个模型对象,但是您不需要创建另一个对象。您可以进行嵌套验证。只需在用户验证器中调用地址验证器即可。一旦你进入验证器例程,你就可以反弹并做任何你需要的事情。