2011-07-04 38 views
2

問題與驗證春/ Webflow的問題,驗證

我會運行驗證當方法 「註冊」

在一個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()); 
} 
} 

在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()); 
} 
} 

執行的行動,並在驗證的用戶類獲取的錯誤,而不是類地址

任何人都知道這是爲什麼?

回答

5

Spring將只調用bean集合上的驗證作爲視圖狀態的模型。

下面將只驗證user

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

您將需要創建一個封裝了用戶和地址的對象,並把它作爲爲模型(和調用User驗證方法和Address在它的驗證方法)。

0

其他答案是正確的關於WebFlow只驗證一個模型對象,但是你不需要創建另一個對象。你可以做嵌套驗證。只需撥打您的用戶驗證器中的地址驗證器即可。一旦你進入你的驗證器例程,你可以反彈並做幾乎你所需要的任何事情。