[英]Grails webflow: merging a new set of params with an existing flow variable
[英]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.