-1

This is not regarding any object or value being null.This is regarding some configuration issue which I am facing with the application. So it cannot be a possible duplicate of the question specified as duplicate. The issue I am facing is that while I am trying to make a simple example using JSF,Spring and hibernate. I am getting a null pointer exception when I make the hibernateDAO function call from the ExpenseForm class where I read all the variables from the jsf form. Below are my related code files.I am using Spring 3.0 and JSF 2.0 configurations.

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;
    }


}

ExpenseForm:

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;
    }

}

ConfigureExpenseDAOImpl:

@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>

applicationContext.xml

 <context:component-scan base-package="com.src.jsfsample"/>
    <import resource="/SpringBeans/DataSource.xml"/>
    <import resource="/SpringBeans/SessionFactory.xml"/>

faces-config.xml

<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>

StackTrace:

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)
Rishabh
  • 3,312
  • 4
  • 42
  • 69
  • @JonathonReinhart : i had tried posting the question initially describing the scenario but then people started asking for the code so I posted this with the code. And here the problem seems to be with configuration or something. You must try understanding the scenario first. – Rishabh Apr 25 '14 at 06:49
  • 3
    Do you have [SpringBeanFacesELResolver](http://docs.spring.io/spring/docs/3.0.x/api/org/springframework/web/jsf/el/SpringBeanFacesELResolver.html) defined in your `faces-config.xml` file? – Andrei Stefan Apr 25 '14 at 06:54
  • @JonathonReinhart : Obviously Not every occurrence of exception must be asked for, most of them can be averted with some fixes.... Imagine everyone was so rude to you for every question you asked. – Rishabh Apr 25 '14 at 06:56
  • @AndreiStefan : Oooo missed that it all works well now... thanks a ton – Rishabh Apr 25 '14 at 07:03
  • @JonathonReinhart : the question did not have an answer where you specified [What is a Null Pointer Exception?](http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception), this was regarding configuration – Rishabh Apr 25 '14 at 07:27

2 Answers2

0

Probably the property value of model ExpenseBean : food,travel,living is null. You should set value for them!

Harmlezz
  • 7,524
  • 23
  • 34
napoleonjk
  • 229
  • 2
  • 6
0

I was missing this in the faces-config.xml file

<application>
        <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
    </application>
Rishabh
  • 3,312
  • 4
  • 42
  • 69