当输入无效字符串而不是数字时,它应该通过异常拦截器。在 Param Interceptor 期间,使用 Integer.parseInt 转换为 int 类型应该会失败,从而触发 NumberFormatException。这个异常不应该被推入值栈吗?为什么尽管有错误,结果还是显示出来?
在表单中输入字母会导致显示零。这是为什么?
Struts2 将转换和验证错误视为输入错误而不是阻塞错误。它不会引发异常,而是返回 INPUT 结果并通知用户输入不正确。
在原始答案中,由于检索默认的 int 值而不是 String 输入,转换错误导致零。然而,转换拦截器应该保存原始字符串以便在后续请求中显示它。
但是为什么字符串显示为零而不是 abc?
问题是由 value 属性引起的输入组件。在 value 属性中使用 getText() 或 getText() 会导致转换问题。删除 value 属性或使用 %{myIntField} 可以解决问题。
以上是Struts 2 INPUT 结果:如何处理转换和验证错误,以及为什么返回 INPUT 结果而不是异常?的详细内容。更多信息请关注PHP中文网其他相关文章!