簡體   English   中英

訪問流中的多個請求參數

[英]Access multiple request params in flow

我在 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**

提交表單時所有信息都會傳遞,但只有第一個<set>標簽實際上是設置數據。 我收到的請求有誤嗎? 有什么我需要在我沒有做的地方注冊的嗎

這就是<action-state>工作方式。 僅計算第一個表達式。

如果您希望對所有三個進行評估,您可以使用<on-entry>來評估其他兩個:

    <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 中的附加信息也可以作為自定義轉換標准的一部分進行測試,允許基於上下文狀態的復雜轉換表達式。

還要注意,動作狀態就像任何其他狀態一樣,可以有一個更多的入口動作,這些動作從頭到尾作為列表執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM