浏览器地址栏:
http://localhost:8080/Struts2/test/l_execute2.do?name=dzr&id=121212
struts.xml配置页面
<action name="l_*" class="cn.dzr.action.HelloWorldAction" method="{1}">
  <result name="success">/WEB-INF/page/hello.jsp</result>
  </action>JSP页面:
<body> <h2>name=${name }</h2>
<h2>id=${id }</h2>
</body>
</html>
Action页面:
private int id;
private String name; public int getId()
{
return id;
} public void setId(int id)
{
this.id = id;
} public String getName()
{
return name;
} public void setName(String name)
{
this.name = name;
}
//......       public String execute2()
{
return "success";
}

结果运行的时候,页面显示了传递进来的参数。可是不清楚,究竟是在什么时候,参数被传递进了action。

解决方案 »

  1.   

    楼主要知道这个那就要去看struts2的源码了。自己看过struts2的源码,整个流程说起来有点长,可以告诉楼主struts2会把request中的参数都放入到他创建的值栈(ValueStack)中,action的创建是在Dispatcher的serviceAction方法(执行相应action)时创建的,创建类主要由ContainerImpl类负责,它会根据你xml中配置的对象工厂进行创建,如果配置了spring的工厂就用spring来创建,默认的xwork的对象工厂进行创建,赋值的时候还会经过相应的类型转换器,这个过程是要早于拦截器的。