2011-10-07 57 views
0

如何传递给方法validate {State}参数,而不是模型?如何将参数传递给验证Spring Webflow的方法?

我有两个对象。 MyForm表单对象和User可以修改MyForm的对象。

视图定义:

<view-state id="finish" view="finish" model="myform">  
<transition on="submit" to="goToFinish" bind="true" validate="true" /> 
</view-state> 

我的验证方法

private MessageContext context; 

public void validateSummary(MyForm myForm, MessageContext context) throws 
BusinessException { 
     this.context = context; 

     validateAddress(myForm); 

.... 

我如何可以验证用户从一个attribiute?没有将用户设置为MyForm对象?

请帮忙。

回答

2

Spring Webflow Documentation

  • 有两种方法来进行编程模型验证。首先是在模型对象中实现验证逻辑。第二个是实现一个外部验证器。这两种方式都为您提供一个ValidationContext来记录错误消息并访问有关当前用户的信息

简单的名称validate${state},其中${state}是您要验证运行您的视图状态的ID(在您的示例)创建一个公共方法:

<view-state id="finish" view="finish" model="myform">  
    <transition on="submit" to="goToFinish" bind="true" validate="true" /> 
</view-state> 

默认的验证会是myform模型对象中的公共方法:

public void validateFinish(ValidationContext context) { 

    ... 
    context.getUserPrincipal() // current user 
    ... 
} 

一个ValidationContext可以让你获得一个MessageContext在验证期间记录消息。它还公开关于当前用户的信息,例如信号userEvent和当前用户的Principal身份。

ValidationContext API:

// The current user event that triggered validation. 
java.lang.String getUserEvent() 

// The current user. 
java.security.Principal getUserPrincipal() 

// Obtain the value entered by the current user in the UI field bound to the property provided.  
java.lang.Object getUserValue(java.lang.String property)