我正在使用Struts2框架(带注释),需要帮助重定向。
步骤1:动作类在执行方法添加动作消息中扩展ActionSupport
。如果操作成功,则将位置设置为JSP - common_popup.jsp
。
步骤2:在JSP中检查hasActionMessages()
并设置包含操作消息的对话框。
问题:a。在由于重定向而导致的操作成功时,操作消息集将丢失。
湾由于重定向,common_popup.jsp
正在新网址中打开。
有没有办法将重定向设置为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>
答案 0 :(得分:1)
结果results = { @Result (name="success", location="common_popup.jsp")
将servlet dispatcher
转发到从结果位置构建的URL。这也称为默认dispatcher
结果类型。因此,在您的代码中,您不是重定向,而是调度或转发由location
属性指定的JSP页面。因此,您的代码中没有显示重定向。如果确实如此,并且您希望在操作之间保存操作消息(不应该重定向到JSP),则可以使用messageStore
interceptor。在链接页面上找到此拦截器的示例或阅读我的答案以查找带有示例的更详细说明。