问题描述
在struts2 的action 里 有这样的问题 方法aaa和方法bbbpublic class abc {public String aaa()throws Exception{参数 xreturn SUCCESS;}public String bbb()throws Exception{return SUCCESS;}}运行方法aaa,得到参数 x想把参数 x 在方法 bbb里调用希望 高手们指点。55555555555555 问题补充:谢谢 xuxiaolei 的回答卧室把x 用 各get set 方法可是在方法bbb调用、 是null您能不能具体说一下谢谢 问题补充:谢谢 xuxiaolei 那么快给我答复.太感谢了其实我就是按照你说的那么做的public class abc { public String aaa()throws Exception{ x = "hello"; return SUCCESS; } public String bbb()throws Exception{ //先用其他方法调用下aaa(),然后x值已经被设置了,bbb()方法就可以使用x了 //一个方法 tt= ccc(x); //但是我打印 x的植 是 null System.out.println(x); return SUCCESS; } private String x; //加上 x 的getter setter 方法} 非常感谢你问题补充:谢谢 xuxiaolei 我好象有点明白你的意思了.我在仔细想想问题补充:谢谢 xuxiaolei 我把代码贴出来。麻烦你看一下。谢谢public class SearchAction extends ActionSupport {private static final long serialVersionUID = -1941901703467836026L;private GoodsManager goodsManager; //service 层private Long minPrice;private Long maxPrice;private String[] category;private Goods goods;private PaginationSupport ps;private List<Goods> pageGoods;private int pageSize = 7;private int startIndex;private int nextIndex;private int previousIndex; //这个方法运行后, 得到detachedCriteria 的值public String allList() throws Exception { DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Goods.class);if (null != getCategory()) {detachedCriteria.add(Restrictions.in(("category"), getCategory())).add(Restrictions.between(("price"), getMinPrice(),getMaxPrice())).addOrder(Order.asc("price"));} else {detachedCriteria.add(Restrictions.between(("price"), getMinPrice(),getMaxPrice())).addOrder(Order.asc("price"));}ps = goodsManager.findpageByCriteria(detachedCriteria, pageSize,startIndex);previousIndex = ps.getPreviousIndex();nextIndex = ps.getNextIndex();totalCount = ps.getTotalCount();return SUCCESS;}//这个方法是想把上个方法里的detachedCriteria值 ,传到这个方法里的detachedCriteria参数里。public String pageList() throws Exception{DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Goods.class);ps = goodsManager.findpageByCriteria(detachedCriteria, pageSize,startIndex);previousIndex = ps.getPreviousIndex();nextIndex = ps.getNextIndex();return SUCCESS;}// getters setters 方法 省略了问题补充:xuxiaolei 谢谢您的回答。是我刚开始表达不清楚。我struts2的;理解还不 太好。感觉第2个请求发出后,第一个请求的变量值都没有乐。郁闷。其实我是在做分页。在allList中,就是把jsp页面的查询条件放入 detachedCriteria 里在pageList中, 是分页。但是,没有查询条。所以想巴detachedCriteria 的值调过来。我按照你的提示在想一想。还是要很感谢您。在百忙之中。为小弟解答问题。问题补充:xuxiaolei 谢谢您我看看按照您的提示我在好好想一想
解决方案
public class DividePage extends ActionSupport {public String execute() throws Exception {//通过requestPageNum计算出来确定要从数据库中取那些数据//然后把结果放在result中,在forward到的另一个页面就可以直接使用了return SUCCESS;}private int requestPageNum;private List result;}另外,我的blog有个分页的逻辑,你可以参考看下http://xuxiaolei.iteye.com/blog/165058
解决方案二:
不好意思,我理解错你的意思了,struts2中的action是线程安全的,每一次请求都可以看成是不同的action实例,所以,如果你想在两个请求中(比如说,第一次请求你的url是SearchAction!allList.action,第二次请求的是SearchAction!pageList.action)这两个请求中是无法在类间共享变量的,即使变量是类的属性也不行,因为可以看成两个请求就是两个不同的action实例,如果你要那样做的话,就只有用allList去调用pageList,pageList函数需要加个参数,就是你需要传递的参数。希望以前的回答没有误导你,我说的有不对的地方欢迎指正。
解决方案三:
完整代码贴出来看看
解决方案四:
public class abc { public String aaa()throws Exception{ x = "hello";return SUCCESS; } public String bbb()throws Exception{ //先用其他方法调用下aaa(),然后x值已经被设置了,bbb()方法就可以使用x了return SUCCESS; }private String x; }
解决方案五:
把参数x设置成类abc的属性,aaa方法里面设置x的值,bbb方法就可以使用x的值了,不知道问的是不是这个意思