我也不知道具体是什么原因,有时候能行可有时候又不能,就是我在用spring给我的action注入dao类的时候有时候能成功,今天就不能成功,NullPointerExcetpion,具体代码如下://这是我的Action类,里边有个AdminDaoImlp,我试图用spring把一个对象注入到这里边,可是就是不成功.
package org.hs.action.manager;import java.util.List;import org.hs.dao.AdminDao;
import org.hs.dao.impl.AdminDaoImpl;
import org.hs.dmain.Admin;import com.opensymphony.xwork2.ActionSupport;public class Login extends ActionSupport {
private String name ;
private String password ;
private AdminDaoImpl admin ;
public AdminDaoImpl getAdmin() {
return admin;
}
public void setAdmin(AdminDaoImpl admin) {
this.admin = admin;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String execute(){
List<Admin> list = admin.findAll() ;
for(Admin a : list){
System.out.println("编号:"+a.getAdminId());
System.out.println("姓名:"+a.getName());
System.out.println("密码:"+a.getPassword());
System.out.println("登陆时间:"+a.getLoginTime());

}
return "index" ;
}
public String login(){
admin.findAll();
System.out.println("hackerhs");
return "index" ;
}
}<!--这是我的spring的ApplicationContext.xml文件-->
<bean id="login" class="org.hs.action.manager.Login">
<property name="admin"> 
<ref bean="AdminDao"/>
</property>
</bean>
<bean name="AdminDao" class="org.hs.dao.impl.AdminDaoImpl">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean> <bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"
value="classpath:hibernate.cfg.xml">
</property>
</bean></beans>
如果我是用直接将AdminDaoImlp实例一个对象来使用,所有的都运行正常,但我是用的框架集成,注入不能成功,麻烦知道的帮忙看一下,先谢谢了.

解决方案 »

  1.   

    没有写获取Spring的Bean工厂啊?试着写一下从bean工厂获取 AdminDao
      

  2.   

    1。楼主,你又不是什么组织的,一般包名不要以org打头,参见JAVA编码规范
    2.
    <bean id="login" class="org.hs.action.manager.Login">
        <property name="admin"> 
            <ref bean="AdminDao"/>
        </property>
    </bean>
    <bean name="AdminDao" class="org.hs.dao.impl.AdminDaoImpl">
        <property name="sessionFactory">
            <ref local="sessionFactory"/>
        </property>
    </bean>请楼主去翻书,查清楚。到底是name还是id,属性名都搞错,能注入进去吗?
      

  3.   


    貌似我讲错了。。建议楼主<bean id="login" 换成name 试试,另外楼主问loginaction的访问方式 是怎么样的? 贴出来看看
      

  4.   

    楼主 多看下struts和spring的书吧~~首先 配置文件 避免首字母大写
    <bean name="adminDao" class="org.hs.dao.impl.AdminDaoImpl">
        <property name="sessionFactory">
            <ref local="sessionFactory"/>
        </property>
    </bean>
    还有这里配置的name 就是你注入的类的name
    private AdminDaoImpl admin ;
    很明显你这是实例化 AdminDaoImpl的代码spring注入 应改为 private AdminDao adminDao ;
    重新生成get set 方法就行了另外你的action的配置 问题太多了
    action的
    <action name="ResourceManager_*" class="com.devtek.action.ResourceManagerAction"
    method="{1}">