首页 > Java开发 > struts页面跳转和局部刷新配置的五种方式

struts页面跳转和局部刷新配置的五种方式

1:ajax json配置:

structs.xml

[html]

  1.  <package name="json" extends="json-default" namespace="/">  
  2.         <action name="login" method="login" class="com.LoginAction">  
  3.             <result type="json" name="success">  
  4.                 <param name="root">dataMap</param>  
  5.             </result>  
  6.         </action>  
  7. </package>   

 

LoginAction.java

[java]

  1. dataMap.put("user", user);  
  2. dataMap.put("success"true);  
  3. return SUCCESS;  

这个是页面局部刷新,<param>这个标签是设置参数的,对于java程序来说,这个标签就相当于定义一个root 变量,将其赋值为dataMap ,前台可以获取使用root这个参数值

前台调用

[javascript]

  1. $.ajax({  
  2.       url : "",  
  3.       type : 'post',  
  4.       success : function(data) {  
  5.              console.info(data.user.info);  
  6.       }  
  7. });  



2:dispatcher 默认配置跳转(页面转发)

[html]

  1. <result name="success">/main.jsp</result>   


其完整格式为

[java]

  1. <result name="success" type="dispatcher">   
  2. bsp;                 <param name="location">/main.jsp</param>   
  3. </result>  

页面跳转过程一直是同一个线程,Action中的数据一直保存在。
location只能是页面,不能是另一个action(可用type="chain"解决,下面第4会介绍)。

3:redirect 类型用于重定向到一个页面,另一个action或一个网址。

[html]

  1. <result name="success" type="redirect">aaa.jsp</result>   


缺点:redirect把一个http返回码(SUCCESS)以及返回的页面位置一起重新发给web服务器,容纳后由web服务器产生一个新的HTTP请求,就会产生一个新的线程,保存在原来Action执行的线程中的数据就无法访问。
所以,result需要包含Action的数据,那么redirect不是一个可行的办法。因为新的HTTP请求时在Servlet容器的新的线程中处理的,ActionContext中的所有状态都不会存在。

处理方法:

[html]
  1. (方法一):  
  2. <result name="topic" type="redirect">/topicAction!findTopics.do?topicId=${topicId}</result>  
  3. (方法二):  
  4. <result name="topic" type="redirect-action">  
  5. <param name="actionName">findTopics</param>  
  6. <param name="topicId">${topicId}</param>  
  7. </result>  



redirect-action 结果类型使用ActionMapperFactory提供的ActionMapper来重定向请求到另外一个action
Xml代码:

[html]

  1. <result name="err" type="redirect-action">  
  2.     <param name="actionName">重定向的Action名</param>  
  3.      <param name="namespace">重定向Action所在的名字空间</param>  
  4. </result>   



redirect和redirect-action两种结果类型在使用上其实并没有什么区别,只是写法不同而已。

4:chain 用于把相关的几个action连接起来,共同完成一个功能

[html]

  1. <action name="step1" class="test.Step1Action">  
  2.      <result name="success" type="chain">step2(这是注释step2.action)</result>  
  3. </action>  
  4. <action name="step2" class="test.Step2Action">  
  5. <result name="success">finish.jsp</result>  
  6. </action>   


处于chain中的action属于同一个http请求,共享一个ActionContext

5:plaintextj 结果类型用于直接在页面上显示源代码

[html]

  1. <result name="err" type="plaintext">  
  2.     <param name="location">具体的位置</param>  
  3.     <param name="charSet">字符规范(如GBK)</param>  
  4. </result>  

 


本文固定链接: http://www.devba.com/index.php/archives/4508.html | 开发吧

报歉!评论已关闭.