为什么要使用常量作为子流状态的 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 中的嵌套枚举,可以在$ 上的Address 和Type 之间看到。
另一个例子是在流范围内存储一个值并在决策状态下访问它
<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>