簡體   English   中英

Struts2結果類型=“ redirectAction”不重定向

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM