Caused by: java.lang.IllegalStateException: Cannot convert value of type [$Proxy4 implementing com.yang.ssh.dao.UserDao,org.springframework.beans.factory.InitializingBean,org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised] to required type [com.yang.ssh.dao.UserDaoImpl] for property 'userDao': no matching editors or conversion strategy found
今天整合S2SH出现了以上的错误,折腾了好久没有解决,望路过的大侠,帮我看看。
我的applicationContext.xml的主要内容为:
<!-- 集成hibernate的配置文件 -->
<bean name="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 加载配置***.hbm.xml的路径 -->
<property name="mappingResources">
<list>
<value>com/yang/ssh/bean/User.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
hibernate.show_sql=true
hibernate.hbm2ddl.auto=create-drop
</value>
</property>
</bean>
<!-- 配置事务管理器 -->
<bean name="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<aop:config>
<!-- 因为逻辑太简单了,所以就把事务配置在了Dao层。实际使用中是不会在dao层配置事务的。 -->
<aop:advisor advice-ref="txAdvice" pointcut="execution(* com.yang.ssh.dao.UserDaoImpl.*(..))"/>
</aop:config>
<!-- 这里使用了set方法进行注入
配置Dao的实现类
-->
<bean name="userDao" class="com.yang.ssh.dao.UserDaoImpl">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!-- 配置Action -->
<bean name="userAction" class="com.yang.ssh.action.UserAction">
<property name="userDao" ref="userDao"/>
</bean>
web.xml内容为
<!-- 配置struts2的过滤器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
<!-- 处理forward request请求 -->
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<!-- 配置Spring中的监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!--配置默认路径 -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
struts.xml内容为:
<struts>
<!--利用Spring对Action托管 -->
<constant name="struts.objectFactory" value="spring"/>
<!-- 配置struts2.0
其中package中name属性是package的唯一标示,
-->
<package name="default" namespace="/" extends="struts-default">
<!-- 配置action -->
<action name="user" class="userAction">
<!-- 配置转移路径 -->
<result name="success">WEB-INF/page/user.jsp</result>
<result name="error">WEB-INF/page/error.jsp</result>
</action>
</package>
</struts>
UserAction.java
package com.yang.ssh.action;
import com.opensymphony.xwork2.ActionSupport;
import com.yang.ssh.bean.User;
import com.yang.ssh.dao.UserDao;
import com.yang.ssh.dao.UserDaoImpl;
public class UserAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 1L;
private UserDao userDao;
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public void setUserDao(UserDaoImpl userDao) {
this.userDao= userDao;
}
public String execute() {
try {
user = new User();
user.setAddress("深圳");
user.setAge(24);
user.setSex("男");
user.setUserName("michaelyang");
userDao.addUser(user);
return "success";
} catch (Exception e) {
System.out.println(e.getMessage());
return "error";
}
}
}
UserDaoImpl.java为:
package com.yang.ssh.dao;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.yang.ssh.bean.User;
public class UserDaoImpl extends HibernateDaoSupport implements UserDao{
public void addUser(User user) {
this.getHibernateTemplate().save(user);
}
}
問題解決方案:
我在UserAction.java 中導入的時候為
public void setUserDao(UserDaoImpl userDao) {
this.userDao= userDao;
}
把它改為UserDao 就OK了
心得:對于通過接口注入理解不清楚!
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ybinwei/archive/2010/08/07/5794840.aspx
分享到:
相关推荐
ssh整合的讲解ssh整合的讲解ssh整合的讲解ssh整合的讲解
ssh整合所需要的jar包,ssh整合所需要的jar包,ssh整合所需要的jar包,
SSH整合详细步骤&SSH整合详细步骤SSH整合详细步骤&SSH整合详细步骤
这个是我自己写的关于SSH整合的例子。包含对数据库的增删改查,包含搭建SSH框架的jar包 。以及详细的步骤。
ssh 整合jar包。
SSH整合完整的jar包
ssh整合所需jar包,SSH(Struts+Spring+Hibernate)是目前十分流行的搭配组合框架
SSH整合的例子 带SQL语句 很全的一个例子. 增加AOP事务处理
简单易懂的ssh整合,适合初学者简单易懂的ssh整合,适合初学者简单易懂的ssh整合,适合初学者
SSH整合开发的一个实例,项目中有两张表(学生表与班级表)它们的关系是一对多的关系,项目中的action包是应用的表示层(Struts2)dao包是应用的数据访问层(Hibernate)domain是对应的两个类,由对象来生成关系,...
SSH整合原理以及步骤详解 SSH整合原理以及步骤详解
一个简单的ssh整合实例(数据库sqlseriver,工具netbeans)
struts spring hibernate 登陆 SSH整合分页功能 SSH整合分页struts spring hibernate 登陆 SSH整合分页功能 SSH整合分页struts spring hibernate 登陆 SSH整合分页功能 SSH整合分页
ssh整合原理图,清晰的了解struts2,hibernate,spring框架的原理及作用
ssh整合时的配置ssh整合时的配置(经典详细)
SSH 整合原代码 包括2种方式:注解&xml;配置 (已测试, 原创) 包含所需的lib
SSH整合实例SSH整合实例SSH整合实例SSH整合实例SSH整合实例SSH整合实例SSH整合实例SSH整合实例SSH整合实例SSH整合实例SSH整合实例SSH整合实例SSH整合实例SSH整合实例
ssh struts+spring+hibernate整合所属所有架包,版本不冲突。下载可用
JavaWeb中的Jar包整合,并配置了Struts的配置文件,hibernate的配置文件,Spring的配置文件。(配置文件是空的,但是有配置文件的头)
ssh中所有需要的jar都包括。不重复不冲突,以及各个jar均通过检测。