Struts 2中动作重定向结果后如何获取动作消息?

问题描述 投票:0回答:1

我正在使用 Struts 2 框架(带注释),我需要帮助才能使用重定向。

第1步:动作类扩展

ActionSupport
,在
execute()
方法中添加动作消息。操作成功后,
location
属性将设置为 JSP -
common_popup.jsp

第 2 步:在 JSP 中检查

hasActionMessages()
并设置包含操作消息的对话框。

问题:由于重定向而导致操作成功时,设置的操作消息将丢失。 b.由于重定向,

common_popup.jsp
将在新 URL 中打开。

有没有办法将重定向设置为 false? 例如我保留向操作类提交请求的页面,并且

common_popup.jsp
作为弹出对话框出现在同一页面的顶部?

动作类:

public class Settings extends ActionSupport {
    
    @Action(value="settings", 
            results = { @Result (name="success", location="common_popup.jsp"),
                @Result (name="failure", location="${actionUrl}")
    })
       
    @Override
    public String execute()
    {
        try {
    
        addActionMessage(" ITS SETTINGS TIME !! ");
            
        }
        catch (Exception exp )
        {
            addActionError(" Failed to update the data base configuration. Please retry. ");
            this.actionUrl = "main.jsp?settings=true";
            return "failure";
        }
        
        
        return "success";
    }
    
}

JSP 代码 -

common_popup.jsp
:

<html>
    <head>
        <link rel="stylesheet" type="text/css" href="stylesheets/jquery-ui.css">
        <link rel="stylesheet" type="text/css" href="stylesheets/loader.css">
        <script src="scripts/jquery-1.11.0.min.js" type="text/javascript"></script>
        <script src="scripts/jquery-ui-1.10.4.js" type="text/javascript"></script>
        <script src="scripts/loader.js" type="text/javascript"></script>    
    </head>
    <body>
         <s:if test="hasActionMessages()">
            <div id="actionMessage" class="ui-dialog" style="display:none" >
                <s:actionerror/>
            </div>
            <script>
                $( "#actionMessage" ).css("display","");
                $( "#actionMessage" ).dialog();
            </script>
        </s:if>
    </body>
</html>
java jquery jsp struts2
1个回答
1
投票

结果

results = { @Result (name="success", location="common_popup.jsp")
将 servlet
dispatcher
转发到从结果位置构建的 URL。

这也称为默认

dispatcher
结果类型。因此,在您的代码中,您不是 redirect,而是分派或转发由
location
属性指定的 JSP 页面。

因此,您的代码中没有显示任何重定向。如果确实如此,并且您想在操作之间保存操作消息(您不应该重定向到 JSP),您可以使用

messageStore
拦截器

在链接页面上找到此拦截器的示例,或阅读我的答案以找到更详细的示例解释。

© www.soinside.com 2019 - 2024. All rights reserved.