struts2之action接收参数方法(get_set方法)

1 struts2的action接收参数可以通过set和get方法。首先将属性添加set和get方法。然后struts2会通过反射(有set和get方法)自动对属性进行实例化。达到java中的new一个对象的目的。


2 有两种情况下,struts2会自动反射进行实例化。第一种是在配置文件中对属性进行配置。
如:<bean name="examples" class="com.example.bean.Example" scope="prototype">
</bean>


<bean name="exampleAction" class="com.example.action.ExampleAction" scope="prototype">
<property name="exampleService" ref="exampleService"></property>
<property name="bean" ref="examples"></property>
</bean>


<action name="exampleSer" class="exampleAction">
        <result name="success">/jsp/example/example_query.jsp</result>
        </action>




解释(前提是action中要有bean的set和get方法):
首先是将bean的属性配置在配置文件中。
其次是将action中的bean的属性,通过ref来进行赋值引用
最后在struts中引用该action


一般情况下都这么在配置文件中进行配置即可。


3还有一种情况说明下(前提是action中要有bean的set和get方法):当配置文件中如果没有对action属性进行赋值引用 ,而在url中有action的属性。在这种情况下,struts2也会自动进行反射处理。达到java中的new一个实例化的目的
如:
<bean name="exampleAction" class="com.example.action.ExampleAction" scope="prototype">
<property name="exampleService" ref="exampleService"></property>
</bean>


<action name="exampleSer" class="exampleAction">
        <result name="success">/jsp/example/example_query.jsp</result>
        </action>


以上的struts配置文件中没有对bean进行ref赋值引用。而url中:exampleSer!query?bean.id=1 这时struts也会对bean进行反射实例化处理。


总结:把action中的bean属性在配置文件中进行配置。这是最好的方法。无论url中有没有action的bean属性。struts都会进行反射实例化处理。
故:始终将action的bean属性在配置文件中进行配置(前提是bean属性必须有set和get方法)


完整的例子:
package com.example.action;


import java.util.List;


import com.example.bean.Example;
import com.example.service.interfaces.ExampleService;
import com.opensymphony.xwork2.ActionSupport;


public class ExampleAction extends ActionSupport{


private Example bean;

private ExampleService exampleService;


public ExampleAction() {
super();
// TODO Auto-generated constructor stub
}


public Example getBean() {
return bean;
}


public void setBean(Example bean) {
this.bean = bean;
}


public ExampleService getExampleService() {
return exampleService;
}


public void setExampleService(ExampleService exampleService) {
this.exampleService = exampleService;
}

public String query(){
System.out.println("query");
List<Example> lists=this.exampleService.query(bean);
System.out.println("size:"+lists.size());
if(bean!=null){
bean.setResultLists(lists);
}else{
System.out.println("bean is null");
}
return "success";
}

public String queryMethod(){
System.out.println("queryMethod");
List<Example> lists=this.exampleService.query(bean);
System.out.println("size:"+lists.size());
if(bean!=null){
bean.setResultLists(lists);
}else{
System.out.println("bean is null");
}
return "success";
}




}




struts.xml
 <action name="exampleSer" class="exampleAction">
        <result name="success">/jsp/example/example_query.jsp</result>
        </action>


spring配置文件:
<bean name="examples" class="com.example.bean.Example" scope="prototype">
</bean>


<bean name="exampleDao" class="com.example.dao.impl.ExampleDaoImpl">
<property name="sqlMapClient" ref="sqlMapClient"></property>
</bean>


<bean name="exampleService" class="com.example.service.impl.ExampleServiceImpl">
<property name="exampleDao" ref="exampleDao"></property>
</bean>


<bean name="exampleAction" class="com.example.action.ExampleAction" scope="prototype">
<property name="exampleService" ref="exampleService"></property>
<property name="bean" ref="examples"></property>
</bean>






example_query.jsp(迭代标签进行处理):
<table class="table_css">
  <tr>
  <td>id</td>
  <td>name</td>
  <td>remark</td>
  </tr>
  <s:if test="#request.bean.resultLists!=null&&#request.bean.resultLists.size()>0">
 
  <s:iterator id="exampleLists" value="#request.bean.resultLists" status="">
  <tr>
  <td>
  <s:property value="#exampleLists.id"/>
  </td>
  <td>
  <s:property value="#exampleLists.name"/>
  </td>
  <td>
  <s:property value="#exampleLists.remark"/>
  </td>
  </tr>
  </s:iterator>
  </s:if>
  </table>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值