每个jsp页面中都要显示一些同样的值,常规的做法当然是直接在action中设置一个属性把这些数据传给jsp了,但是这样的话每个action都要写这个属性,相应的getter、setter方法,于是就想到了定义一个拦截器,反正jsp显示的这些数据都是从ValueStack中取的,那么我就自己设置吧,于是就这样做了,但是问题就多多了,比如拦截器的顺序,顺序没弄好值就就被修改了,传不过去了,但是还是解决了,今天又碰到一些问题了,我用的是SiteMesh来进行装饰,妈的,你说怪不怪,SiteMesh所定义的装饰页面可以显示这些值,action所定义的被装饰jsp页面就不能显示,妈的,一样的取值,就是有不同的表现,HttpServletRequest request=(HttpServletRequest)ActionContext.getContext().get(StrutsStatics.HTTP_REQUEST);
OgnlValueStack stack=(OgnlValueStack)request.getAttribute("struts.valueStack");
String result=invocation.invoke();
/**
* Set the properties
*/
List<Category> cityList=systemService.getCategorySortList("city");
stack.set("cityList",cityList);
EhcacheVindicatorProxy proxy=new EhcacheVindicatorProxy("menu");
List<FrontMenu> frontMenuList=(List)proxy.get(FrontMenu.class, "frontmenus", "menus.xml");
stack.set("frontMenuList",frontMenuList);
return result;这是我拦截器中手动给ValueStack设值的代码,妈的,我在jsp页面中<s:debug/>看竟然找不出这些值设在哪了,有的说会在ValueStack栈顶插入一个装有这两个值的Map,妈的,<s:debug/>查看一会有,一会没有,有的时候这两个值还是空的,妈的是空的,SiteMesh定义的装饰页面,竟然取到了,真搞不懂他妈的是怎样取到的,真他妈的想用简单方法做了:
反正是全局的数据,
1、第一次取后全都放到session中,在jsp页面直接在session中取
2、第一次取后全部放到application中,在jsp页面直接在application取
3、每个action中都定义这些属性,每次都取一下,代码管他妈的重复不重复弄了快一个月了,还是没找出全部数据的最好显示方式,真他妈的郁闷!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
OgnlValueStack stack=(OgnlValueStack)request.getAttribute("struts.valueStack");
String result=invocation.invoke();
/**
* Set the properties
*/
List<Category> cityList=systemService.getCategorySortList("city");
stack.set("cityList",cityList);
EhcacheVindicatorProxy proxy=new EhcacheVindicatorProxy("menu");
List<FrontMenu> frontMenuList=(List)proxy.get(FrontMenu.class, "frontmenus", "menus.xml");
stack.set("frontMenuList",frontMenuList);
return result;这是我拦截器中手动给ValueStack设值的代码,妈的,我在jsp页面中<s:debug/>看竟然找不出这些值设在哪了,有的说会在ValueStack栈顶插入一个装有这两个值的Map,妈的,<s:debug/>查看一会有,一会没有,有的时候这两个值还是空的,妈的是空的,SiteMesh定义的装饰页面,竟然取到了,真搞不懂他妈的是怎样取到的,真他妈的想用简单方法做了:
反正是全局的数据,
1、第一次取后全都放到session中,在jsp页面直接在session中取
2、第一次取后全部放到application中,在jsp页面直接在application取
3、每个action中都定义这些属性,每次都取一下,代码管他妈的重复不重复弄了快一个月了,还是没找出全部数据的最好显示方式,真他妈的郁闷!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
每个action中都定义这些属性,每次都取一下,代码管他妈的重复不重复
楼主想过没有,定义一个BaseAction,它有那几个属性,然后所有Action都继承它,这样就不会代码重复了。
全局都要用的参数,是允许放到session中的。