在做一个Spring+Struts的程序。
总是提示找不到指定的方法。在Spring中是使用cglib创建代理的。
Struts.xml中也指定了要使用Sping来创建管理对象。
++++++++++++++
Struts.xml
===================<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.devMode" value="true"></constant>
<constant name="struts.objectFactory" value="spring"></constant>

<package name="Microblogging" extends="struts-default">
<action name="UserLoginAndRegist" class="cn.edu.bzu.Microblogging.Action.UserLoginAndRegist">
<result name="success">/jsp/webPage/user_index.jsp</result>
<result name="input">/jsp/prompt/regist_prompt_failure.jsp</result>
</action>
</package>
</struts>    ============
Sping 的配置文件:
==============<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"><value>classpath:hibernate.cfg.xml</value></property>
</bean>
<!-- 事务管理器 -->
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>

<aop:config proxy-target-class="false">
<aop:pointcut id="transactionPointcut" expression="execution(* cn.edu.bzu.Microblogging..*.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="transactionPointcut"/>
</aop:config>
<!-- 通知 -->
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="get*" read-only="true" propagation="NOT_SUPPORTED"/>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>

<!-- Spring自动扫描 -->
 <context:component-scan base-package="cn.edu.bzu.Microblogging"/>
</beans>=================
出现的错误是:java.lang.NoSuchMethodException: cn.edu.bzu.Microblogging.Action.UserLoginAndRegist$$EnhancerByCGLIB$$bd296b55.regist()
==============
希望有大牛可以帮忙……多谢了先。

解决方案 »

  1.   

    你这样肯定是找不到的了,既然你的Spring用了自动扫包,你Struts配置里action的class不能是类的全路径,而是由Spring为你注入的名称,应该是你action所有类注解命名的名称,而且你把Spring的注解配置开了吧,反正看你的配置文件也太简单了吧,给你个地址去看看,有完整的Struts2配置文件和Spring配置文件,就是扫包的。
    http://blog.csdn.net/lun379292733
      

  2.   

    这是action中的哦配置:@Controller
    public class UserLoginAndRegist{
    private BlogUser user;
    private UserServiceImpl userServiceImpl;在Struts中class是不是这样: <action name="UserLoginAndRegist" class="userLoginAndRegist">===如果是这样的话,还是不行啊。
    报错如下:java.lang.NoSuchMethodException: cn.edu.bzu.Microblogging.Action.UserLoginAndRegist.regist()
    =====还是提示找不到方法。