[英]Struts2 result type=“redirectAction” doesn't redirect
我有一個程序,其中的以下代碼(並非由我自己編寫)可以按預期工作:
.JSP代碼:
<input type="submit" value="add sample" name="action:dataAddSample" id="buttonAddSample"/>
STRUTS.XML代碼:
<action name="dataAddSample" class="com.invenso.xperido.controller.DataCRUD" method="addSample">
<result name="success" type="redirectAction">
<param name="actionName">dataform</param>
<param name="id">${data.id}</param>
</result>
</action>
在操作方法addSample
返回“成功”之后,將執行操作dataform
addSample
,並且此操作將用戶重定向到以下url(使用參數id):
http://localhost:8080/Test/data/dataform.action?id=11476
我將此代碼復制到相同的包和名稱空間中,以實現相似的工作流程,只是使用不同的操作方法(刪除而不是添加):
<action name="dataDeleteSample" class="com.invenso.xperido.controller.DataCRUD" method="deleteSample">
<result name="success" type="redirectAction">
<param name="actionName">dataform</param>
<param name="id">${data.id}</param>
</result>
</action>
我通過使用ajax而不是直接將輸入按鈕鏈接到動作來更改了動作的調用方式:
JAVASCRIPT / AJAX代碼:
$.ajax({
type: "POST",
url: "<s:property value='urlDeleteSample'/>",
data: { sampleDBName: sampleName, sampleDBQueryName: queryName },
success: function(data, textStatus, jqXHR){ ......
該URL正是操作的鏈接,因此可以正常工作。 通過使用調試消息,我可以確認操作dataDeleteSample
觸發器,並調用deleteSample
方法。 但是由於某種原因,用戶無法像上面那樣重定向到url。 我什至刪除了deleteSample
方法中的所有業務邏輯,只是讓它返回deleteSample
,但結果似乎仍未觸發數據表單操作並重定向用戶。
是什么原因造成的? 這是我使用AJAX的事實嗎? 我對Struts不夠熟悉,無法知道為什么第一個代碼可以工作,但是我的卻不行。 歡迎對struts框架如何處理這種情況有任何見解。
您不會注意到重定向,因為您正在使用AJAX進行調用,這意味着必須將獲取的DATA附加到DOM中才能查看結果。 在成功事件處理程序中,您必須這樣做。 可能在那里失敗,對其進行調試。
您必須替換為type =“ chain”
<action name="remove" class="com.action.firstAction" method="remove">
<result name="success" type="chain">secondaction</result>
</action>
<action name="second action" class="com.action.secondAction" method="result">
<result name="success">result.jsp</result>
</action>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.