【问题标题】:Spring Webflow | Different validate method per transitionSpring Webflow |每个转换的不同验证方法
【发布时间】:2011-11-17 01:43:19
【问题描述】:

我目前有一个使用 Webflow + Ajax 的 Spring Webflow 应用程序。

我有一个名为“A”的视图状态,它有几个转换。

<view-state id="A" model="myClass">
    <transition on="X1" .../>
    <transition on="X2" .../>
    <transition on="X3" .../>
</view-state>

问题是每个转换应该只验证“myClass”的一部分,而不是全部。默认情况下,Spring Webflow 有一个验证方法。

基本上我需要的是在每次转换时调用不同的验证方法,而不是只有一个。

这可能吗?关于如何做到这一点的任何想法?

提前致谢!!!

【问题讨论】:

    标签: ajax spring spring-mvc tiles2 spring-webflow-2


    【解决方案1】:

    为什么不对视图状态使用一个 ValidationClass? 您可以通过调用获取触发验证的事件

    public String getUserEvent();
    

    在 ValidationContext 上。 然后,根据结果做任何你想验证的事情。

    【讨论】:

    • ebflow 参考指南写道: ValidationContext ValidationContext 允许您获取 MessageContext 以在验证期间记录消息。它还公开有关当前用户的信息,例如发出信号的 userEvent 和当前用户的 Principal 身份。此信息可用于根据 UI 中激活的按钮或链接,或通过身份验证的人员自定义验证逻辑。 link
    • 这似乎可行。非常感谢。我会测试它,如果可以,我会告诉你!
    【解决方案2】:

    可以使用名为validatorMethod 的属性来指定调用验证器的特定方法,如here 所述。这是来自 Javadoc 的修改示例,展示了如何执行此操作:

    <view-state id="displayCriteria">
        <on-render>
            <evaluate expression="formAction.setupForm"/>
        </on-render>
        <transition on="search" to="executeSearch">
            <evaluate expression="formAction.bindAndValidate">
                <attribute name="validatorMethod" value="validateSearchCriteria"/>
            </evaluate>
        </transition>
    </view-state>
    

    这是假设为searchFormAction 定义的验证器有一个名为validateSearchCriteria 的方法。

    【讨论】:

    • 我认为这适用于 Spring Webflow 的早期版本,但不适用于 3。第一个答案有效。无论如何,谢谢。
    猜你喜欢
    • 2011-05-07
    • 2014-09-05
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    • 2023-03-07
    • 2017-01-18
    相关资源
    最近更新 更多