繁体   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