ognl.OgnlException: target is null for setProperty(null, "offset", [Ljava.lang.String;@1e86eb7)

来源:互联网 发布:多重网络有什么影响 编辑:程序博客网 时间:2024/05/16 19:20

WARN com.opensymphony.xwork2.ognl.OgnlValueStack:49 - Error setting expression 'pager.offset' with value '[Ljava.lang.String;@1e86eb7'

使用分页框架中传递的参数名为pager.offset 用struts2接收它里面的参数出现了错误!

 

这是因为那个参数用了pager.offset,这样struts2会以为这是个类.属性,但是你在Action中又没有该类,所以报了null错误了。
解决方法:如果你想在Action中拿到这个值,那么你要建一个pager类,里面有个属性是offset,再get,set两方法,然后在Action中写个pager再用get,set方法,这样就能拿到了,要是你觉得每个拿麻烦,那还有另一种方法。
你那些Action不是要继承ActionSupport么,你写个所有Action的父类BaseAction来继承ActionSupport,然后所有继承ActionSupport换成继承BaseAction.
重点来了,BaseAction再去实现ParameterAware,这样就会重写public void setParameters(Map<String, String[]> parameters)方法,你就在这个方法里写多一句话,parameters.remove("pager.offset");就可以去除掉了,或者你可以先取得这个值,然后换个key,再把取得的值放回去就可以了。我的是用
过滤器获取后放到ThreadLocal里面让其它值取的,所以直接remove掉就行了。

原创粉丝点击