我想通過調用一個函數來實現到另一個視圖的轉換並設置流量範圍中的某個變量。成功或錯誤事件沒有任何區別。我知道,我可以在視圖狀態和操作狀態下使用評估標記來調用函數。將評估標籤放在每個標籤中是否有區別?對於這種情況哪一個更好?在視圖狀態或處於操作狀態下評估標記有什麼區別
0
A
回答
1
WebFlow的靈活性在於,您可以通過「入門」和「退出」標籤或動作狀態標籤執行任何狀態下的表達式評估。與任何允許靈活性的框架一樣,最好選擇一種在所有流程中保持一致的策略。您可以簡單地在「視圖狀態」內的「on-entry」或「on-render」標籤中執行評估表達式,但使用中間的「操作狀態」先執行您的表達式,然後轉換到「視圖狀態」。
優勢:
有時你必須評估多個表達式,但它們是相同的「行動」的一部分。將這些多重評估分爲'行爲狀態'和'行爲狀態'提供一個有意義的ID名稱可以有助於流程的可讀性和潛在的故障排除,如果在該行爲狀態中引發異常。
因此,舉例來說,
可以說,我們要調用3種不同的服務方法,我們渲染「視圖狀態」之前。我們可以這樣做:
<view-state id="myViewState" view="myViewFile" model="entity">
<on-entry>
<evaluate expression="myService.findObjById(id)" result="flowScope.model" />
<evaluate expression="myService.updateUserStats(someField)"/>
<evaluate expression="myService.performSomeOtherAction()"/>
</on-entry>
</view-state>
,這會工作得很好,但它會更好,如果我們去掉所有的服務方法從「上進入」調用,並把他們安置在自己的「動作狀態」一旦完成執行再過渡到「視圖狀態」
<action-state id="prepareMyViewState">
<evaluate expression="myService.findObjById(id)" result="flowScope.model" />
<evaluate expression="myService.updateUserStats(someField)"/>
<evaluate expression="myService.performSomeOtherAction()"/>
<transition to="myViewState"/>
</action>
<view-state id="myViewState" view="myViewFile" model="entity">
</view-state>
這兩個例子將是「正確的」,但是所述一個與所述動作狀態是更詳細和明確規定的關注點分離。因此,如果在動作狀態「prepareMyViewState」中引發異常,我們確切知道該名稱的這個動作狀態的作用與反映視圖狀態'myViewState'的拋出異常有關,該異常可能與準備或相關呈現視圖狀態。另外,如果您希望添加/編輯/刪除服務調用,將來可以通過有意義的名稱「prepareMyViewState」將它們置於自己的操作狀態中,從而輕鬆地將它發現到流文件中。
再一次,我會強調這裏沒有錯誤的答案,我只想說在整個Web流應用程序中選擇一個一致的「樣式」。中間動作狀態的第二種風格是我會使用的。
相關問題
- 1. SCXML狀態圖和UML狀態圖有什麼區別?
- 2. 無狀態和有狀態小部件有什麼區別?
- 3. 有狀態和無狀態lambda表達式有什麼區別?
- 4. 遊戲AI中狀態評估與啓發式有什麼區別?
- 5. 回發數據和視圖狀態數據有什麼區別
- 6. 視圖狀態和控制狀態之間的區別
- 7. 狀態圖和有限狀態機(FSM)之間的區別?
- 8. 有狀態服務和狀態感知服務有什麼區別?
- 9. 處於活動狀態和非活動狀態的狀態圖
- 10. Android操作欄圖標始終處於溢出狀態
- 11. 如何在PyGTK中將狀態圖標或區域添加到狀態圖標
- 12. WRKACTJOB和WRKJOB在AS400中處於活動狀態有什麼區別?
- 13. Windows Workflow中的狀態,活動和動作有什麼區別
- 14. 狀態機和工作流有什麼區別?
- 15. 訪問網絡狀態(ACCESS_NETWORK_STATE)和WIFI狀態(ACCESS_WIFI_STATE)權限有什麼區別?
- 16. 操作系統狀態圖
- 17. 睡眠線程處於什麼狀態?
- 18. 爲什麼ansi_nulls在數據庫級別處於關閉狀態時處於新會話狀態?
- 19. Spring WebFlow - 視圖狀態或動作狀態下的業務邏輯
- 20. 在操作欄處於活動狀態時將圖標添加到標籤
- 21. 視圖狀態
- 22. 動作如在UML狀態圖狀態
- 23. 在後臺狀態下繼續操作
- 24. 無狀態和有狀態壓縮之間的區別?
- 25. [ValidateModel]和ASP.NET中有效狀態檢查有什麼區別?
- 26. 狀態機有什麼好處?
- 27. 檢查手風琴的操作狀態或關閉狀態
- 28. 有狀態和無狀態流處理
- 29. 什麼使統一緩衝區對象處於活動狀態?
- 30. 當任何子視圖處於活動狀態時,AngularJs navbar父視圖應該處於活動狀態
最好在動作狀態中使用評估標籤,然後轉換到另一個視圖狀態。視圖狀態旨在具有視圖特定細節,而操作狀態旨在評估表達式(方法)以進行後續轉換。 –
那麼當我們使用評估視圖狀態? – user4002899