运用struts2+spring2.5+hibernate3.2配置aop权限实现时:()
<aop:config>
<aop:aspect id="aspectLog" ref="logAspect">
<aop:pointcut id="logpointcut" expression="execution(* com.study.jurisdiction.service.jurisdiction.*.*(..))" />
<aop:after-returning pointcut-ref="logpointcut" method="writeLogInfo" />
</aop:aspect>
</aop:config>
<bean id="logAspect" class="com.study.springAOP.log.LogAspect">
</bean>
上述配置业务层的aop所有方法切入,代码运行正常。
但是将aop切入到action层面时,<aop:pointcut id="logpointcut" expression="execution(* com.study.jurisdiction.action.jurisdiction.*.*(..))" />
出现页面form中的user.name和user.password无法映射到action中对应的User user对象。
请有经验先手给予指点
<aop:config>
<aop:aspect id="aspectLog" ref="logAspect">
<aop:pointcut id="logpointcut" expression="execution(* com.study.jurisdiction.service.jurisdiction.*.*(..))" />
<aop:after-returning pointcut-ref="logpointcut" method="writeLogInfo" />
</aop:aspect>
</aop:config>
<bean id="logAspect" class="com.study.springAOP.log.LogAspect">
</bean>
上述配置业务层的aop所有方法切入,代码运行正常。
但是将aop切入到action层面时,<aop:pointcut id="logpointcut" expression="execution(* com.study.jurisdiction.action.jurisdiction.*.*(..))" />
出现页面form中的user.name和user.password无法映射到action中对应的User user对象。
请有经验先手给予指点
业务层一般都要用struts2的拦截器;
在下不才,找了struts2的相关源码读了下,也没搞清其中原理。
5楼兄弟,"...业务层一般都要用struts2的拦截器;",拜拖,struts拦截业务层,好雷你的分层结构。业务放在action里?
在struts2的表单数据映射到action的对象过程之前,是先执行struts2内部的默认拦截链,当然也可以显式定义,例如<interceptor-ref name ="defaultStack"/>
注意strut2的拦截器:public String intercept(ActionInvocation actionInvocation) throws Exception ,
当用自定义AOP方法拦截struts2的action时,虽然自定义的切入方法能正常运行,但截断了struts2默认拦截器ActionInvocation的传递,也就中断了表单数据向action内对象映射传递。初步设想解决方法:可以测试将自定义的切入类 implements Interceptor,耦合度高些,但应当能解决问题,考虑用策略模式实现降低偶合度;
(求职中,待抽时间解决后交流,期望有兴趣和时间的朋友先研究后共享)