我尝试在Action类中添加操作错误并在JSP页面上打印它们。
当发生异常时,它将进入catch块并在控制台中打印“插入异常,联系管理员时出错”。
在catch块中,我添加了addActionError()
,我尝试在jsp页面中打印它...
但消息未在jsp页面中显示。
我可能遗失或做错了什么?
Struts映射:
<action name="dataUpdate" class="foo.bar.myAction" method="updation">
<result name="success" type="redirectAction">
../Aggregator/redirectToDataUpdate
</result>
</action>
动作类:
public String updation() throws JiffieTransactionException{
try {
// do stuff...
} catch (NumberFormatException e) {
addActionError("Error in inserting the Exception, Contact the Admin");
System.out.println("Error in inserting the Exception, Contact the Admin");
e.printStackTrace();
}
return SUCCESS;
}
用于打印操作错误的JSP代码:
<s:if test="hasActionErrors()">
<br></br>
<div class="errors">
<font color="red">
<s:actionerror/>
</font>
</div>
</s:if>
答案 0 :(得分:1)
在catch块中添加操作消息,如:
addActionMessage("Error in inserting the Exception, Contact the Admin"); //in catch block
然后在jsp上写:
<s:if test="hasActionErrors()">
<br></br>
<div class="errors">
<font color="red">
<s:actionerror/>
</font>
</div>
<s:if test="hasActionMessages()">
<div class="errors">
<font color="red">
<s:actionmessage/>
</font>
</div>
</s:if>
</s:if>
答案 1 :(得分:1)
执行redirectAction时,会创建一个新的Request,因此所有的actionMessages,actionErrors以及所有其他参数(未明确声明在struts配置中传递)都将丢失。
然后
在出现错误时返回类型调度程序的不同结果,例如。 ERROR
:
<action name="dataUpdate" class="foo.bar.myAction" method="updation">
<result name="success" type="redirectAction">....redirectToDataUpdate</result>
<result name="error">previousPage.jsp</result>
</action>
public String updation() {
try {
// do stuff...
return SUCCESS;
} catch (NumberFormatException e) {
addActionError("Errors... ");
e.printStackTrace();
return ERROR;
}
}