处理Struts 1 ActionForm中的异常

时间:2010-08-11 23:28:27

标签: java struts

我正在使用一个使用Struts 1.1的旧Web应用程序。为了进行业务验证(涉及多个表单属性和调用后端服务的复杂验证),我编写了一个ActionForm实现,它在ActionForm.validate方法上调用一系列验证器。

验证器链使用commons链实现。一切都很好,除了在ActionForm.validate中发生异常时,它不会被struts异常处理程序捕获,而是在屏幕上显示堆栈跟踪。 struts异常处理程序无法捕获

无论如何都要避免页面上的堆栈跟踪并将异常传播给struts异常处理程序?

由于

1 个答案:

答案 0 :(得分:2)

也许验证者最好不要抛出异常。验证用于检查用户输入是否受限于minChars,maxChars,密码强度/验证,电子邮件语法正确性,isNumber等约束。如果验证器失败,它应该只返回false - 永远不会抛出异常。请参阅http://struts.apache.org/1.2.4/userGuide/dev_validator.html

上的示例

如果您的验证器调用后端函数......我认为有些错误。验证器应该只添加字段错误。

如果语法正确输入的结果存在错误(例如登录的用户/密码错误),则struts应用程序(您的操作)应该处理此错误并将操作错误返回给用户。这可以通过在抛出异常时重定向到错误页面来完成(UserNotLoggedInException)。