我正在尝试找到一种方法,在struts.xml中为Action类抛出的每种类型的异常配置一条错误消息。在一个动作类中,我可以通过捕获异常,调用addActionError(String)
并重新抛出异常(假设存在<exception-mapping>
)来完成类似的操作。有没有办法通过配置来做到这一点?
作为参考点,Struts1中存在此功能,异常处理程序上具有key
属性 - 我希望能够做类似的事情。
<exception key="some.key"
type="java.io.IOException"
handler="com.yourcorp.ExceptionHandler"/>
答案 0 :(得分:0)
在strut2中,您也可以定义异常映射。请参阅http://struts.apache.org/release/2.1.x/docs/exception-configuration.html。你可以有一个常见的error.jsp,它显示一个根据异常的类名查找的消息。
答案 1 :(得分:0)
在Struts2中,您可以使用以下映射将键/消息传递给结果(结果可以是jsp或其他操作类)。
<global-exception-mappings>
<exception-mapping exception="com.test.exception.MyCustomException" result="error">
<param name="param">display.custom.error</param>
</exception-mapping>
</global-exception-mappings>
<global-results>
<result name="error" type="chain">handleAction</result>
</global-results>
<action name="handleAction" class="HandleExceptionAction">
<result name="result">/WEB-INF/jsp/error.jsp</result>
</action>
如果它是一个动作类,在链接的情况下(如果用户想要处理异常)那么你需要在Action类中有一个带有getter和setter的相应属性。
public class HandleExceptionAction extends ActionSupport implements
ServletRequestAware, SessionAware {
private **String param**;
private HttpServletRequest httpRequest;
private static final Log LOG = LogFactory.getLog(InputAction.class);
public String execute(){
LOG.debug("inside excute().....");
LOG.debug("Parameter passed:" + param);
System.out.println("Parameter passed:" + param);
return "result";
}
我正在使用弹簧注射,希望它能帮助你。