【问题标题】:Access multiple request params in flow在流中访问多个请求参数
【发布时间】:2020-03-04 02:54:20
【问题描述】:

我在 Spring Web Flow 中有一个动作状态,它从提交的表单中获取参数:

<action-state id="newToken">
    <set name="requestScope.timestamp" value="requestParameters.timestamp" type="java.lang.String"/>
    <set name="requestScope.origin" value="requestParameters.origin" type="java.lang.String"/>
    <set name="requestScope.tokenHmacToValidate" value="requestParameters.tokenHmacToValidate" type="java.lang.String"/>
    <transition to="validateToken"/>
</action-state>

但是,只有第一个 requestParameters 值被设置(即,如果 timestamp 是第一个,那么只有它被设置。如果 origin 是第一个,那么只有它被设置)。当我访问第二个和第三个值时,它们的值是null,而不是传递给它的值。以下是表单提交时传递的表单数据示例:

_eventId=tokenValidationEvent
origin=https%3A%2F%2Flocalhost%3A8443
timestamp=20200218171041
tokenHmacToValidate=**REDACTED**

提交表单时所有信息都已传递,但实际上只有第一个&lt;set&gt;标签是设置数据。我是否收到错误的请求?有什么我需要在我不做的地方注册吗

【问题讨论】:

    标签: spring-webflow


    【解决方案1】:

    这就是&lt;action-state&gt; 的工作方式。只计算第一个表达式。

    如果您希望评估所有三个,您可以使用&lt;on-entry&gt; 评估另外两个:

        <action-state id="newToken">
            <on-entry>
                <set name="requestScope.timestamp" value="requestParameters.timestamp" type="java.lang.String"/>
                <set name="requestScope.origin" value="requestParameters.origin" type="java.lang.String"/>
            </on-entry>
            <set name="requestScope.tokenHmacToValidate" value="requestParameters.tokenHmacToValidate" type="java.lang.String"/>
            <transition to="validateToken"/>
        </action-state>
    

    来自https://docs.spring.io/spring-webflow/docs/current/reference/html/actions.html#action-state

    在每个动作执行后,动作状态检查结果是否与声明的转换到另一个状态相匹配。这意味着,如果配置了多个动作,它们将在有序链中执行,直到返回一个结果事件,该事件与动作状态的状态转换相匹配,而其余的被忽略。这是责任链 (CoR) 模式的一种形式。

    动作执行的结果通常是从该状态转换的标准。当前 RequestContext 中的其他信息也可以作为自定义转换标准的一部分进行测试,从而允许复杂的转换表达式根据上下文状态进行推理。

    还要注意,一个动作状态就像任何其他状态一样,可以有一个更多的入口动作,这些动作从开始到结束作为一个列表执行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-25
      • 2012-08-01
      • 1970-01-01
      • 2019-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多