Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java DAO调用时出现空指针异常_Java_Spring_Hibernate_Jsf_Jsf 2 - Fatal编程技术网

Java DAO调用时出现空指针异常

Java DAO调用时出现空指针异常,java,spring,hibernate,jsf,jsf-2,Java,Spring,Hibernate,Jsf,Jsf 2,这与任何对象或值为null无关。这与我在应用程序中面临的一些配置问题有关。因此,它不能与指定为重复的问题重复。 我面临的问题是,当我尝试使用JSF制作一个简单的示例时,Spring和hibernate。当我从ExpenseForm类中调用hibernateDAO函数时,我得到了一个空指针异常,我在该类中读取了jsf表单中的所有变量。下面是我的相关代码文件。我正在使用Spring3.0和JSF2.0配置。 ExpenseBean: @Entity @Table(name = "Expenses")

这与任何对象或值为null无关。这与我在应用程序中面临的一些配置问题有关。因此,它不能与指定为重复的问题重复。 我面临的问题是,当我尝试使用JSF制作一个简单的示例时,Spring和hibernate。当我从ExpenseForm类中调用hibernateDAO函数时,我得到了一个空指针异常,我在该类中读取了jsf表单中的所有变量。下面是我的相关代码文件。我正在使用Spring3.0和JSF2.0配置。

ExpenseBean:

@Entity
@Table(name = "Expenses")
public class ExpenseBean implements Serializable {
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    private int food;
    private int travel;
    private int living;

    @Id
    @Column(name = "Food", nullable = false)
    public int getFood() {
        return food;
    }

    public void setFood(int food) {
        this.food = food;
    }

    @Column(name = "Travel", nullable = false)
    public int getTravel() {
        return travel;
    }

    public void setTravel(int travel) {
        this.travel = travel;
    }

    @Column(name = "Living", nullable = false)
    public int getLiving() {
        return living;
    }

    public void setLiving(int living) {
        this.living = living;
    }


}
费用形式:

public class ExpenseForm {

    private int food;
    private int travel;
    private int living;

    private ConfigureExpenseDAO configureExpenseDAO;

    public ConfigureExpenseDAO getConfigureExpenseDAO() {
        return configureExpenseDAO;
    }

    public void setConfigureExpenseDAO(ConfigureExpenseDAO configureExpenseDAO) {
        this.configureExpenseDAO = configureExpenseDAO;
    }

    public String addExpense() {

        ExpenseBean expense = new ExpenseBean();
        System.out.println(food);
        expense.setFood(food);
        expense.setLiving(living);
        expense.setTravel(travel);
        System.out.println(expense.getFood() + expense.getLiving());


    /*line 33*/
        configureExpenseDAO.saveExpenseDetails(food, living, travel);
        return "index";

    }

    public int getFood() {
        return food;
    }

    public void setFood(int food) {
        this.food = food;
    }

    public int getTravel() {
        return travel;
    }

    public void setTravel(int travel) {
        this.travel = travel;
    }

    public int getLiving() {
        return living;
    }

    public void setLiving(int living) {
        this.living = living;
    }

}
配置ExpenseAImpl:

@Repository("configureExpenseDAO")
public class ConfigureExpenseDAOImpl extends HibernateAbstractBase implements ConfigureExpenseDAO{


    @Override
    public void saveExpenseDetails(int food, int living, int travel) {
        // TODO Auto-generated method stub
        System.out.println("DAO");
        ExpenseBean expense=new ExpenseBean();
        expense.setFood(food);
        expense.setLiving(living);
        expense.setTravel(travel);
        HibernateTemplate hTemp = getHibernateTemplate(); 
        hTemp.saveOrUpdate(expense);
    }
}
SessionFactory.xml

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
   <property name="dataSource" ref="dataSource"></property>
    <property name="annotatedClasses">             
        <list>                 
            <value>com.src.jsfsample.model.ExpenseBean</value>

        </list>         
    </property>           
    <property name="hibernateProperties">             
        <props>                 
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
            <prop key="hibernate.show_sql">false</prop>               
            <!-- <prop key="hibernate.current_session_context_class">thread</prop> -->             
        </props>         
    </property>     
 </bean>

可能model
ExpenseBean:food、travel、living
的属性值为空。你应该为它们设定值

我在faces-config.xml文件中遗漏了这一点

<application>
        <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
    </application>

org.springframework.web.jsf.el.SpringBeanFacesELResolver

@JonathonReinhart:我曾试图发布最初描述场景的问题,但后来人们开始询问代码,所以我将此与代码一起发布。这里的问题似乎是配置或其他方面的问题。您必须首先尝试理解该场景。您是否在
faces config.xml
文件中定义了该场景?@JonathonReinhart:显然,并非每次出现异常都必须询问,大多数异常都可以通过一些修复来避免。。。。想象一下,你问的每一个问题,每个人都对你如此无礼。@Andreestefan:oooooo错过了,现在一切都很好。。。谢谢ton@JonathonReinhart:在您指定的位置,问题没有答案,这是关于配置否的,这很好,因为我作为输入获取的值是通过网页自动设置的。在这种情况下不是,因为我没有使用struts。。。
<managed-bean>
    <managed-bean-name>expenseForm</managed-bean-name>
    <managed-bean-class>com.src.jsfsample.managedbean.ExpenseForm</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
    <managed-property>
        <property-name>configureExpenseDAO</property-name>
        <value>#{configureExpenseDAO}</value>
    </managed-property>
    </managed-bean>
20
40
SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path [/JSFExample] threw exception [javax.el.ELException: java.lang.NullPointerException] with root cause
java.lang.NullPointerException
    at com.src.jsfsample.managedbean.ExpenseForm.addExpense(ExpenseForm.java:33)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.el.parser.AstValue.invoke(AstValue.java:277)
    at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:273)
    at org.apache.myfaces.view.facelets.el.ContextAwareTagMethodExpression.invoke(ContextAwareTagMethodExpression.java:96)
    at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:74)
    at javax.faces.component.UICommand.broadcast(UICommand.java:120)
    at javax.faces.component.UIViewRoot._broadcastAll(UIViewRoot.java:1172)
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:365)
    at javax.faces.component.UIViewRoot._process(UIViewRoot.java:1656)
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:862)
    at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:42)
    at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:196)
    at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:143)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:196)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:357)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
<application>
        <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
    </application>