2014-03-13 60 views
1

我正在使用Struts2框架(带注释)并需要重定向帮助。Struts2 - 将重定向设置为false

第1步:动作类扩展ActionSupport,执行方法添加动作消息。在成功采取行动时,位置设置为JSP - common_popup.jsp

步骤2:在JSP中检查hasActionMessages()并设置一个包含操作消息的对话框。

问题:a。由于重定向而导致的操作成功失败。 b。由于重定向,common_popup.jsp正在打开一个新的URL。

有没有办法将重定向设置为FALSE?这样我保留提交请求到动作类和common_popup.jsp的页面就会出现在同一页面的顶部作为弹出对话框。

Action类:

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

只显示代码你在哪里重定向,我看不到。还有什么是'假'?这是已知布尔值的缩写吗? –

+0

results = {@Result(name =“success”,location =“common_popup.jsp”)以上将成功的动作重定向到common_popup.jsp –

回答

1

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

+0

谢谢罗马。 messageStore拦截器确实帮助我将消息存储到HTTP Session并稍后检索它。 –

相关问题