我正在使用 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>
结果
results = { @Result (name="success", location="common_popup.jsp")
将 servlet dispatcher
转发到从结果位置构建的 URL。
这也称为默认
dispatcher
结果类型。因此,在您的代码中,您不是 redirect,而是分派或转发由 location
属性指定的 JSP 页面。
因此,您的代码中没有显示任何重定向。如果确实如此,并且您想在操作之间保存操作消息(您不应该重定向到 JSP),您可以使用
messageStore
拦截器。
在链接页面上找到此拦截器的示例,或阅读我的答案以找到更详细的示例解释。