当前位置: 首页 > 知识库问答 >
问题:

jsf应用程序中的spring 2.5.6 DI问题

卞成荫
2023-03-14

每次尝试将数据插入数据库时,都会出现NPE(空指针异常)。帮我解决这个问题。我已经导入了Spring所需的所有必要库。这是我的applicationcontext.xml文件,我在其中配置了所有bean。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

<bean id="personService" class="com.ecommerce.assignment.service.PersonService">
    <property name="personDAO" ref="personDAO" />
</bean>
<bean id="personBean" class="com.ecommerce.assignment.bean.PersonBean" />
<bean id="personDAO" class="com.ecommerce.assignment.dao.PersonDAO" />
</beans>
public interface IPersonDAO {
    public void addPerson(Person instance);
}
public class PersonDAO implements IPersonDAO {

        @Override
        public void addPerson(Person instance) {
            Session session = HibernateUtil.getSessionFactory().openSession();
            session.beginTransaction().begin();

            session.saveOrUpdate(instance);

            session.getTransaction().commit();
            session.close();
        }
    }

这是接口PersonService。公共接口IPersonService{public void addPerson(Person实例);}

   public class PersonService implements IPersonService,Serializable {
        private IPersonDAO personDAO;

        public IPersonDAO getPersonDAO() {
            return personDAO;
        }

        public void setPersonDAO(IPersonDAO personDAO) {
            this.personDAO = personDAO;
        }

        @Override
        public void addPerson(Person instance) {
            getPersonDAO().addPerson(instance);
        }
}

public class PersonBean implements Serializable {

    private static final long serialVersionUID = 1L;
    private String emailAddress;
    private String password;
    private String username;
    @ManagedProperty(value = "#{personService}")
    private IPersonService iPersonService;

public void addPerson(){
        try{
            Person person = new Person();
            person.setUsername(getUsername());
            person.setEmailAddress(getEmailAddress());
            person.setPassword(getPassword());
            iPersonService.addPerson(person);
        }
        catch(Exception ex){
            ex.printStackTrace();
        }

    }
}

共有1个答案

公冶谦
2023-03-14

由于您的person bean是由Spring管理的,所以您应该使用@autowired注释来进行依赖注入,或者通过XML进行注入,就像您对PersonService所做的那样。您也可以将bean声明为@component@scope

错误在于使用JSF的@managedproperty注释在bean中注入服务,该注释仅在JSF上下文中工作,即使用JSF托管bean,使用@managedbean注释或通过XML声明。

 类似资料:
  • 我整天都在尝试运行JSF应用程序的JMeter测试。我知道,但这似乎是一个非常简单的问题。我准备了正则表达式提取器: 以下采样器是用代理和记录创建的。 第一个请求。这是将从中提取ViewState的请求。 请求其中<代码>${jsfviewstee}被传递到 第二个请求在本例中非常重要。 结果是: 首先。在右边我们可以看到ViewState的值。 ,它显示jsfViewState值是正确的。我们可

  • 我的应用程序中的查询有问题。这是执行查询的查询方法: 这是错误: 在我发现的痕迹中: 原因:java。lang.IllegalArgumentException:在EntityManager中创建查询时发生异常:异常描述:语法错误解析[SELECT*FROM PRODUCT WHERE CATEGORY='Humano'。[22,22]select语句必须有FROM子句。[7,7]算术表达式中缺少

  • 主要内容:1)创建用户界面,2)创建托管Bean,3)配置应用程序要创建一个JSF应用程序,我们在这里使用NetBeans IDE 8.2。 当然您也可以使用其他Java IDE。 在这里先创建一个项目,之后我们将运行测试它的配置设置。 所以,让我们首先来创建一个新的项目。 步骤1:创建一个新项目 打开NetBeans IDE 8.2,转到【文件】菜单并选择【新建项目】。如下图所示 - 选择类别为【Java Web】和项目为【Web应用程序】。如下图所示 - 输

  • 我目前正在尝试制作一个网页,但我不知道为什么我的html不能看到提供的css文件。我在SpringBoot有一个应用程序。我有以下文件:索引。html 风格css

  • 根据log4j和log4j2留档,使用tld和jsp页面可以很好地工作。 http://logging.apache.org/log4j/2.x/manual/webapp.html http://logging.apache.org/log4j/2.x/log4j-taglib/tagreference.html#log.tld 它可以与xmlns一起使用:log=”http://logging

  • 我有一个简单的facelets页面: Foobar bean如下所示: -将有效的输入值推送到模型(如果组件连接到bean属性)。 -执行操作和操作侦听器(如果组件是操作)。 所以在这里,应该执行myCommandButton,不是吗?而组件的执行意味着要执行它的操作?