【问题标题】:How to pass parameter to a method of validating the Spring Webflow?如何将参数传递给验证 Spring Webflow 的方法?
【发布时间】:2023-03-07 15:25:01
【问题描述】:

除了模型之外,我如何传递给方法 validate {State} 参数?

我有两个对象。 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);

....

如何验证来自用户的属性?不将 User 设置为 MyForm 对象?

请帮忙。

【问题讨论】:

    标签: java spring validation spring-webflow


    【解决方案1】:

    来自Spring Webflow Documentation

    • 有两种以编程方式执行模型验证的方法。首先是在模型对象中实现验证逻辑。二是实现一个外部的Validator。这两种方式都为您提供了 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) 
    

    【讨论】:

      猜你喜欢
      • 2014-07-23
      • 2011-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-18
      • 1970-01-01
      • 1970-01-01
      • 2010-12-05
      相关资源
      最近更新 更多