各位好,现在很郁闷,请各位帮帮忙呢。
我在java类中测试:
     ApplicationContext context;
        System.out.println("Initalizing application");
        context=new ClassPathXmlApplicationContext("applicationContext.xml");
        System.out.println("Getting testDao");
        UserDAO2 testDao=(UserDAO2)context.getBean("userDAO2");
        
        TUser user = testDao.getUserByUsername("xuetao");
        System.out.println(user.getSex());
测试通过。
在页面上调用:
    UserDAO2 userDAO2=new UserDAO2();
        TUser user = userDAO2.getUserByUsername("xuetao");
        System.out.println(user.getSex()); 但是在页面上报错:
java.lang.IllegalArgumentException: No SqlMapClient specified
org.springframework.util.Assert.notNull(Assert.java:90)
org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:155)
org.springframework.orm.ibatis.SqlMapClientTemplate.queryForObject(SqlMapClientTemplate.java:222),好像是类中的 sqlMapClient 没有映射上呢。 <!-- UserDAO方案er -->
<bean id="userDAO2" class="org.xuetao.webservice.dao.UserDAO2">
<property name="sqlMapClient">
<ref bean="sqlMapClient"/>
</property>
</bean>
谢谢

解决方案 »

  1.   

    没整合过这两个。你把applicationContext.xml贴出来看一下
      

  2.   

    你org.xuetao.webservice.dao.UserDAO2中的依赖对象sqlMapClient给set**/get**()没有?
      

  3.   

    java.lang.IllegalArgumentException: No SqlMapClient specified 应该是splconfig没有加载,是和spring的整合的问题。检查一下,你的sqlmap是不是放到application里却了。
      

  4.   

    上边测试正常,服务器用的是tomcat吗?应该是缺少jar包,你把spring那两个jar添加tomcat试试
      

  5.   

    applicationContext.xml 配置如下:<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
    <beans>
    <!-- DataSource -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
            <property name="driverClassName">
                <value>oracle.jdbc.driver.OracleDriver</value>
            </property>
            <property name="url">
                <value>jdbc:oracle:thin:@127.0.0.1:1521:EOS</value>
            </property>
            <property name="username">
                <value>yccrm</value>
            </property>
            <property name="password">
                <value>admin</value>
            </property>
        </bean>
        
        <!-- Spring iBatis SqlMapClient -->
        <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
         <property name="configLocation" value="classpath:sqlmap-config.xml"/>
         <property name="dataSource" ref="dataSource"/>
       </bean>
      
       <!-- Spring iBatisTemplate -->
       <bean id="sqlMapClientTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate">
       <property name="sqlMapClient">
       <ref bean="sqlMapClient"/>
       </property>
       </bean>
    <!-- UserDAO方案er -->
    <bean id="userDAO2" class="org.xuetao.webservice.dao.UserDAO2">
    <property name="sqlMapClient">
    <ref bean="sqlMapClient"/>
    </property>
    </bean></beans> 
      

  6.   

    spring那两个.jar 是什么意思呢?缺少什么jar呢
      

  7.   

    调用方法:public class UserDAO2 extends SqlMapClientDaoSupport{
    public TUser getUserByUsername(String username){
    try {
    return (TUser) super.getSqlMapClient().queryForObject("getUserbyUsername", username);
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return null;
    //return (TUser) getSqlMapClientTemplate().queryForObject("getUserbyUsername", username);

    }
    }在jsp是这样调用的:
    UserDAO2 userDAO2=new UserDAO2();
                   TUser user = userDAO2.getUserByUsername("xuetao");
                   System.out.println(user.getSex()); 
    在java中测试在上面是通过的呢
      

  8.   

    spring不支持,去看看SqlMapClientDaoSupport就知道了。
      

  9.   

    如果是通过Spring注入的话不能直接去实例化一个类的只能通过
    ApplicationContext context;
    System.out.println("Initalizing application");
    context=new ClassPathXmlApplicationContext("applicationContext.xml");
    这个来初始化一个类,然后在去调用当前类的方法.