一,Unexpected Exception caught setting 异常
今天在做crm项目时,想要实现一个客户列表的分页查询,但在action总是不能成功把分页数据带回给jsp,初次查询之后action应该返回当前页currentPage给jsp,但是下面的OGNL表达式总是不能正确获取值并抛出以下异常,经过仔细检查,发现是PageBean中的属性currentPage的set方法有误,上网查询后得知,
造成这种异常的原因其实很简单,如果package使用了ParameterIntercepter这个拦截器,OgnlValueStack
会自动为Action中有set方法的属性赋值(如果用了modeldriven,同样也会为实体中有set方法的属性赋值),赋值时,OGNL
会将此时值栈中的action当做当前节点(默认情况下在请求进入action之前,该action也会被放入值栈),然后访问它的成
员属性的set方法,如果ognl的context中的参数在action中找不到对应的set方法,就会抛出OgnlException,最后我们在控制
台就看到了这个异常信息。
所以在spring项目中,使用struts2作为web层,要注意bean的set的方法是否有误,否则不能成功赋值。
<A href="javaScript:void(0)" οnclick="changePage(<s:property value='#pageBean.currentPage-1' />)" >前一页</A>]
<B><s:property value="#pageBean.currentPage" /></B>
[<A href="javaScript:void(0)" οnclick="changePage(<s:property value='#pageBean.currentPage+1' />)" >后一页</A>]
Unexpected Exception caught setting 'select' on 'class com.cai.crm.action.CustomerAction: Error setting expression 'select' with value ;