我有消息存儲攔截Struts中的2個問題刪除錯誤,我在我的struts.xml文件中的下列行爲:Struts 2的消息存儲在攔截器重定向沒有
<action name="rfi" method="add" class="org.test.action.RfiAction">
<interceptor-ref name="store">
<param name="operationMode">AUTOMATIC</param>
</interceptor-ref>
<interceptor-ref name="defaultStack" />
<result name="error">../display/irrt/rfi.jsp</result>
<result name="input">../display/irrt/rfi.jsp</result>
<result name="success" type="redirectAction">
<param name="actionName">rfis</param>
<param name="namespace">/irrt</param>
</result>
</action>
當行動回報成功地,它重定向到列出的動作,成功消息被攔截器正確保存和檢索。
但是,當發生錯誤時,沒有重定向,它會轉到列出的JSP頁面,但錯誤不會顯示(所有其他數據都會)。就像MessageStoreInterceptor在運行時清除錯誤變量的內容一樣,如果沒有發生重定向,當前操作不再有錯誤消息。
當攔截器設置爲STORE或AUTOMATIC模式時(即使攔截器在AUTOMATIC模式下不應運行,結果不包含重定向),也會發生這種情況。
我的代碼只添加錯誤或消息。它從不刪除它們。動作代碼如下:
private String add()
{
try
{
// add the rfi entry
this.rfiService.addRfi(this.rfiEntry, this.getLoggedInUser());
}
catch(ConnectionException e)
{
this.addActionError("Could not add RFI entry.");
e.printStackTrace();
return ERROR;
}
// set success message
this.addActionMessage("RFI entry added.");
return SUCCESS;
}
這是用來顯示消息的JSP代碼:
<s:if test="hasActionErrors() == true">
<s:iterator value="actionErrors">
<p class="text"><b><font color="red"><s:property /></font></b></p>
</s:iterator>
</s:if>
<s:elseif test="hasActionMessages() == true">
<s:iterator value="actionMessages">
<p class="text"><b><font color="green"><s:property /></font></b></p>
</s:iterator>
</s:elseif>
這個問題的任何幫助,將不勝感激。
'rfis'動作通過攔截器。這涉及rfi動作,當它轉到「錯誤」或「輸入」結果(根本沒有重定向的結果)時。當它通過這些結果時,操作錯誤不會顯示出來。 –
你的意思是說使用's:actionerror'或's:actionmessage'不顯示錯誤/消息? –
這是正確的。我使用上面的迭代器遍歷動作錯誤或消息,但是,我只是嘗試了s:actionerror和s:actionmessage標記,但它仍然不顯示。 –