2011-07-04 3 views
2

問題と春/ Webflowの問題: ...方法はWebflowのでは</p> <p>を "登録" するとき、私は検証を実行しているだろう検証</p> <p>と検証

<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()); 
} 
} 
Addressクラスで

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クラスのためではなく、クラスのアドレスのためのバリデータのエラーを取得しますか?

答えて

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の検証メソッドを呼び出しますだ検証方法)。

0

もう1つの答えは、WebFlowが1つのモデルオブジェクトのみを検証することについては正しいですが、別のオブジェクトを作成する必要はありません。ネストされた検証を実行できます。ユーザーバリデーター内のAddressバリデーターに電話するだけです。あなたがバリデータールーチンの中に入ったら、あなたは何か必要なものをバウンスすることができます。

関連する問題