首頁 >Java >java教程 >Struts2如何處理輸入錯誤並回傳INPUT結果?

Struts2如何處理輸入錯誤並回傳INPUT結果?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-01 12:52:10249瀏覽

How Does Struts2 Handle Input Errors and Return an INPUT Result?

輸入結果在 Struts2 中如何運作?

當工作流程攔截器偵測到欄位錯誤時,會觸發 Struts2 的 INPUT 結果,無論是來自轉換或驗證錯誤。這些錯誤不會引發異常,而是被視為輸入錯誤,因此會傳回 INPUT 結果以請求使用者輸入更正。

處理轉換/驗證錯誤

Struts2 的錯誤處理機制涉及幾個關鍵步驟:

  1. 參數攔截器: 嘗試設定參數。如果在轉換過程中發生執行階段異常(例如 NumberFormatException),則會默默地吞掉該異常或透過開發人員通知記錄下來。
  2. 轉換錯誤攔截器: 識別任何轉換錯誤並將欄位錯誤新增至 ActionContext 。它還儲存原始值,以確保在欄位包含驗證錯誤時將它們顯示給使用者。
  3. 驗證攔截器: 基於 XML、註解或操作方法執行驗證。如果驗證失敗,它會將欄位錯誤新增至每個不合規欄位的 ActionContext。
  4. 工作流程攔截器: 檢查轉換和驗證中的欄位錯誤。如果有錯誤,則傳回INPUT結果;否則,它將繼續處理下一個攔截器。

要啟用此機制,請確保以正確的順序定義以下攔截器:

<interceptor-ref name="params"/>
<interceptor-ref name="conversionError"/>
<interceptor-ref name="validation"/>
<interceptor-ref name="workflow"/>

附加說明關於整數轉換

要處理非數字字元到零的轉換,請避免使用value 屬性與傳回int 資料型別的getter 結合使用。這可能會導致額外的轉換錯誤並導致值為 0。請改用以下語法:

<s:textfield name="myIntField"/>

<s:textfield name="myIntField" value="%{myIntField}"/>

以上是Struts2如何處理輸入錯誤並回傳INPUT結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn