【问题标题】:Using EL expression inside ID field (Spring WebFlow)在 ID 字段中使用 EL 表达式(Spring WebFlow)
【发布时间】:2015-03-16 03:23:31
【问题描述】:

我有一个常量类

@Component
public class NameConstants implements Serializable{
    public final static String NAME = "randomName";
    public static String getNAME() {
        return NAME;
    }   
}

以下网页流程似乎对我不起作用:

<subflow-state id="#{NameConstants.NAME }" subflow="someflow">

是否可以在 ID 字段中使用 EL 表达式? 我不断收到错误:

'#{NameConstants.NAME }'is not a valid value for 'NCName'.

【问题讨论】:

    标签: java spring spring-webflow


    【解决方案1】:

    为什么要使用常量作为子流状态的 id?我想使用外部对象将 id 设置为流状态的 id 字段是没有意义的。

    你可以试试这个

    <subflow-state id="#{T(com.foo.NameConstants).NAME}" subflow="someflow">
    <!-- NameConstants#getNAME should be called -->
    

    我没有测试这个解决方案。

    为什么 NameConstants 带有 @Component 注释?我认为它也应该适用于简单的 Pojo 或 Enum。我从未尝试在流状态的 id 字段中使用 EL。

    我们使用这样的EL表达式:

    <subflow-state id="choose-address-subflow" subflow="address">
        <input name="addressTypeId" value="T(org.our.company.domain.Address$Type).DELIVERY.getId()" type="java.lang.Integer"/>
        ...
    </subflow-state>
    

    其中org.shop.domain.Address$Type 是域模型org.shop.domain.Address 中的嵌套枚举,可以在$ 上的AddressType 之间看到。

    另一个例子是在流范围内存储一个值并在决策状态下访问它

    <view-state id="summary" view="some-view">
        <on-entry>
           <!-- value can also be defined in some external objects like Address$Type-->
           <set name="flowScope.nextState" value="'is-submitted'" type="java.lang.String"/> 
        </on-entry>
        ...
    </view-state>
    

    处于决策状态

    <decision-state id="is-check-successful">
        <if test="action.isCheckSuccessful(flowRequestContext)"
            <!-- if check returns true, next state is is-submitted -->
            then="#{flowScope.nextState}" 
            else="first-state"/>
    </decision-state>
    

    【讨论】:

      【解决方案2】:

      是的,你可以这样做

      #{T(com.foo.NameConstants).NAME}
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-01
      • 1970-01-01
      • 2017-05-28
      • 2012-09-26
      • 2018-06-05
      • 2013-09-02
      • 2012-02-21
      • 2012-09-05
      相关资源
      最近更新 更多