gpt4 book ai didi

java - 将引用属性传递给 spring webflow 中的操作状态评估

转载 作者:太空宇宙 更新时间:2023-11-04 06:33:59 28 4
gpt4 key购买 nike

我正在尝试将参数传递给 Spring WebFlow 中的评估标记

<action-state id="activateOption">
<evaluate expression="someService.call()" result="flowScope.serviceResult" result-type="java.lang.String">
**<attribute name="x" value="flowScope.serviceInput"/>**
</evaluate>
<transition on="0" to="Stop_View"/>
</action-state>

在 SomeService bean 中,当我像这样检索 x 参数时:

RequestContextHolder.getRequestContext().getAttributes().get("x") 

它返回字符串“flowScope.serviceInput”,而不是我之前在流程中以另一种状态设置的 flowScope.serviceInput 的值。

我可以像这样在输入时传递引用值:

<action-state id="some action">
<on-entry>
<set name="flowScope.someName" value="flowScope.someOtherParam + ' anything!!'" type="java.lang.String"/>
</on-entry>

为什么我在为评估设置属性时无法执行此操作?

解决方法不起作用,因为我们正在尝试以这种方式生成流。

谢谢!

最佳答案

如果我正确理解你的问题,那么你可以通过以下方式获取 flowScope.serviceInput 的值:

    RequestContextHolder.getRequestContext().getFlowScope().get("serviceInput")

在 Set 表达式中,值根据 requestContext 作用域的变量值对进行计算。

在评估表达式中,也在 requestContext 中评估表达式(而不是属性值)。因此,不会在 requestContext 作用域的变量值对中查找属性值,但会按照流定义中的指定捕获它。这就是原因,对于评估属性,您获得的值为“flowScope.serviceInput”,但对于设置其中包含的值。

但是你可以尝试使用 EL 来获取它:

    <attribute name="x" value="#{flowScope.serviceInput}"/> 
for SWF version > 2.1

或与

    <attribute name="x" value="${flowScope.serviceInput}"/> 
for SWF version < 2.1 where ever you are setting this attribute value.

关于java - 将引用属性传递给 spring webflow 中的操作状态评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25689134/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com