10:47:26,012 ERROR DefaultDispatcherErrorHandler:42 - Exception occurred during processing request: null
java.lang.NullPointerException
at com.itxin.bos.web.action.StaffAction.pageQuery(StaffAction.java:47)
at com.itxin.bos.web.action.StaffAction$$FastClassBySpringCGLIB$$dbbd6f09.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:651)
at com.itxin.bos.web.action.StaffAction$$EnhancerBySpringCGLIB$$8d64ca4d.pageQuery(<generated>)
at com.itxin.bos.web.action.StaffAction$$FastClassBySpringCGLIB$$dbbd6f09.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:651)
at com.itxin.bos.web.action.StaffAction$$EnhancerBySpringCGLIB$$bb301123.pageQuery(<generated>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
原来使用的是jdk代理,强制使用cglib代理之后就有这个毛病。去掉@RequiresPermissions能正常注入。
历经两天,用土方法挨个替换测试吧。终于发现是structs配置有问题。
<!-- 需要进行权限控制的页面访问 -->
<action name="page_*_*">
<result type="dispatcher">/WEB-INF/pages/{1}/{2}.jsp</result>
</action>
<!-- 用户管理 -->
<action name="userAction_*"
class="com.itxin.bos.web.action.UserAction" method="{1}">
<result name="home">/index.jsp</result>
</action>
<!-- 取派员管理 -->
<action name="staffAction_*"
class="staffAction" method="{1}">
<result name="list">/WEB-INF/pages/base/staff.jsp</result>
</action>
解决一:
class不要用全限定名。
解决二:
@Controller(“staffAcion”)在注解上指定Action名称。