论坛首页 Java企业应用论坛

struts2 namespace chain

浏览 4602 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-12-11  

首先介绍一下namespace
     Struts2的配置文件struts.xml当中有一个元素package ,这个元素有一个属性是 namespace。这个属性的作用是什么呢?

 


1. 确定该包内的action URL路径
例如:

<package name="rodom"  namespace="/templates" extends="struts-default">
         <action name="testAction" class="test.web.TestAction">
  			<result>test.jsp</result>
         </action>
</package>

假设应用contextpath名字为tianxia,应用服务器端口号为8080若在浏览器中访问testAction此时URL的路径为 http://localhost:8080/tianxia/ templates/ testAction.action

在配置namespace时注意的是在templates名字前加“/”


2. 确定返回jsp或ftl等文件的物理路径
如上面的配置test.jsp需放在templates目录下struts才能够找到
若想访问应用根目录下的文件例如index.jsp则如下配置:
<result>/index.jsp</result>


接下来讨论一下<result type=”chain”>的配置
当action结果调用另一个action时result的类型设置为chain,则表示被调用的action会保持调用action的属性值。
Type=“chain”时 result标签的参数可以有下面4个
       • actionName
       • namespace
       • method
       • skipActions
举个例子:
配置如下:

<action name="fm" class="test.web.SimpleAction">
  			<result type="chain">
  				<param name="actionName">chaintest</param>
  				<param name="method">look</param>
  			</result>
</action>
<action name="chaintest" class="test.web.ChainAction">
  		<result type="freemarker">test.ftl</result>
</action>

 

public class SimpleAction extends ActionSupport{
	private String message;
public String getMessage() {
		return message;
	}
	public void setMessage(String message) {
		this.message = message;
	}
public String execute()
	{
		message = "hello ";
	}
}

 

public class ChainAction extends ActionSupport{
	private String message;
public String getMessage() {
		return message;
	}
	public void setMessage(String message) {
		this.message = message;
	}
public String execute()
	{
		message += " tianxia!";
		System.out.println(message);
	}
}


当调用”fm”这个action返回SUCCESS时fm会调用test.web.ChainAction类的look()方法
控制台上会打印 hello tianxia!这说明SimpleAction的message被保存到ChainAction。

此处需要注意的是,
1.一个Action调用其它Action用chain的方式,调用者中的集合类中的元素依然会保存到被调用者执行。
2. <result type="chain"> chaintest! look</result>不能访问到test.web.ChainAction的look方法

 

论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics