當輸入無效字串而不是數字時,它應該通過異常攔截器。在 Param Interceptor 期間,使用 Integer.parseInt 轉換為 int 類型應該會失敗,從而觸發 NumberFormatException。這個異常不應該被推入值棧嗎?為什麼儘管有錯誤,結果還是顯示出來?
在表單中輸入字母會導致顯示零。這是為什麼?
Struts2 將轉換和驗證錯誤視為輸入錯誤而不是阻塞錯誤。它不會引發異常,而是傳回 INPUT 結果並通知使用者輸入不正確。
在原始答案中,由於檢索預設的 int 值而不是 String 輸入,轉換錯誤導致零。然而,轉換攔截器應該保存原始字串以便在後續請求中顯示它。
但是為什麼字串顯示為零而不是 abc?
問題是由 value 屬性引起的輸入組件。在 value 屬性中使用 getText() 或 getText() 會導致轉換問題。刪除 value 屬性或使用 %{myIntField} 可以解決問題。
以上是Struts 2 INPUT 結果:如何處理轉換和驗證錯誤,以及為什麼返回 INPUT 結果而不是異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!