java.lang.NullPointerException

Java

31/07/2013

Estou com um problema quando vou adicionar um novo produto, ao chamar o addProduct.jsp estou tendo esse erro:

javax.faces.el.EvaluationException: java.lang.NullPointerException
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
at javax.faces.component.UICommand.broadcast(UICommand.java:315)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:775)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1267)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1852)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.NullPointerException
at myfirstjsfapp.dao.ProductDAO.add(ProductDAO.java:30)
at myfirstjsfapp.managedbeans.ProductFace.finishAddProduct(ProductFace.java:36)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.el.parser.AstValue.invoke(AstValue.java:278)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:274)
at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:70)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
... 24 more


Esse é o meu ProductDAO.java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package myfirstjsfapp.dao;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;
import myfirstjsfapp.db.DatabaseUtil;
import myfirstjsfapp.db.Product;

/**
 *
 * @author Robinho
 */
public class ProductDAO extends DatabaseUtil{

    private static final long serialVersionUID = 1L;
    
    public ProductDAO(){        
        super();
    }
    
    public boolean add(Product prod) throws ClassNotFoundException, SQLException{
        PreparedStatement ps = (PreparedStatement) getPreparedStatement("INSERT INTO APP.PRODUCT values (?,?,?,?)");
        ps.setInt(1, prod.getCode());
        ps.setString(2, prod.getName());
        ps.setInt(3, prod.getNumberofitens());
        ps.setDouble(4, prod.getPrice());
        int toReturn = ps.executeUpdate();
        ps.close();
        return toReturn > 0;
    }
    
    public boolean set(Product prod) throws ClassNotFoundException, SQLException{
        PreparedStatement ps = (PreparedStatement) getPreparedStatement("UPDATE APP.PRODUCT SET NAME = ?, NUMBEROFITENS = ?, PRICE = ? WHERE CODE = ?");
        ps.setString(1, prod.getName());
        ps.setInt(2, prod.getNumberofitens());
        ps.setDouble(3, prod.getPrice());
        ps.setInt(4, prod.getCode());
        int toReturn = ps.executeUpdate();
        ps.close();
        return toReturn > 0;
    }
    
    public boolean delete(Product prod) throws SQLException, ClassNotFoundException{
        PreparedStatement ps = (PreparedStatement) getPreparedStatement("DELETE FROM APP.PRODUCT WHERE CODE = ? ");
        ps.setInt(1, prod.getCode());
        int toReturn = ps.executeUpdate();
        ps.close();
        return toReturn > 0;
    }
    
    public List<Product>getAllProducts() throws ClassNotFoundException, ClassNotFoundException, SQLException{
        List<Product> toReturn = new LinkedList<Product>();
        ResultSet rs = getStatement().executeQuery("SELECT * FROM APP.PRODUCT");
        while (rs.next()){
            Product prod = new Product();
            populateProd(prod,rs);
            toReturn.add(prod);
        }
        rs.close();
        return toReturn;
    }
    
    public Product getById(int iProduct) throws ClassNotFoundException, SQLException{
        PreparedStatement ps = (PreparedStatement) getPreparedStatement("SELECT * FROM APP.PRODUCT WHERE CODE = ? ");
        ps.setInt(1, iProduct);
        ResultSet rs = ps.executeQuery();
        if (!rs.next()) return null;
        Product toReturn = new Product();
        populateProd(toReturn, rs);
        rs.close();
        ps.close();        
        return toReturn;
        
    }

    private void populateProd(Product prod, ResultSet rs) throws SQLException {
        prod.setCode(rs.getInt("CODE"));
        prod.setName(rs.getString("NAME"));
        prod.setNumberofitens(rs.getInt("NUMBEROFITENS"));
        prod.setPrice(rs.getDouble("PRICE"));
    }
}


Esse é o meu ManagedBean (ProductFace.java):

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package myfirstjsfapp.managedbeans;

import java.sql.SQLException;
import java.util.List;
import myfirstjsfapp.dao.ProductDAO;
import myfirstjsfapp.db.Product;


/**
 *
 * @author Robinho
 */
public class ProductFace {

    private ProductDAO prodDAO = new ProductDAO();
    private Product selectedProduct;
    private List<Product> products;
    

    /** Creates a new instance of ProductFace */
    public ProductFace() {
        System.out.println("The product face has created !");
    }
    
    public String startAddProduct(){
        selectedProduct = new Product();
        return "gotoAddNewProduct";
    }
    
    public String finishAddProduct() throws ClassNotFoundException, SQLException{
        prodDAO.add(selectedProduct);
        //Clean the Cached Products
        products = null;
        return "gotoListProducts";                
    }
    
    public List<Product> getProducts() throws ClassNotFoundException, SQLException{
        if (products == null){
            products = prodDAO.getAllProducts();
        }        
        return products;
    }
    
    public String startEditProduct(){
       return "gotoEditProduct";
    }
    
    public String finishEditProduct()  throws ClassNotFoundException, SQLException{
        prodDAO.set(selectedProduct);
        //Clean the Cached Products
        products = null;
        return "gotoListProducts";                
    }

    public String removeProduct()  throws ClassNotFoundException, SQLException{
        prodDAO.delete(selectedProduct);
        products = null;
        return "gotoListProducts";
    }

    public Product getSelectedProduct() {
        return selectedProduct;
    }

    public void setSelectedProduct(Product selectedProduct) {
        this.selectedProduct = selectedProduct;
    }
}


e esse é o meu products.jsp

<%-- 
    Document   : products
    Created on : 31/07/2013, 23:13:20
    Author     : Robinho
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>

<!doctype html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>The Products</title>
    </head>
    <body>
        <f:view>
            <h:form>
            <h1><h:outputText value="The Products"/></h1>
            <h:dataTable border="1" var="item" value="#{productFace.products}">
                <h:column>
                    <f:facet name="header">
                        <h:outputText value="code"/>
                    </f:facet>
                    <h:outputText value="#{item.code}"/>
                </h:column>
                <h:column>
                    <f:facet name="header">
                        <h:outputText value="Name"/>
                    </f:facet>
                    <h:outputText value="#{item.name}"/>
                </h:column>
                <h:column>
                    <f:facet name="header">
                        <h:outputText value="Stock"/>
                    </f:facet>
                    <h:outputText value="#{item.numberofitens}"/>
                </h:column>
                <h:column>
                    <f:facet name="header">
                        <h:outputText value="Price"/>
                    </f:facet>
                    <h:outputText value="#{item.price}"/>
                </h:column>
                <h:column>
                    <f:facet name="header">
                        <h:outputText value="Actions"/>
                    </f:facet>
                    <h:commandLink value="delete" action="#{productFace.removeProduct}">
                        <f:setPropertyActionListener target="#{productFace.selectedProduct}" value="#"/>
                    </h:commandLink> 
                    <h:outputText value="/"/>
                    <h:commandLink value="edit" action="#{productFace.startEditProduct}">
                        <f:setPropertyActionListener target="#{productFace.selectedProduct}" value="#"/>
                    </h:commandLink> 
                </h:column>
            </h:dataTable>

            <br/>

            [b]<h:commandButton action="#{productFace.finishAddProduct}" value="Add new Product" />[/b]
            </h:form>
        </f:view>
    </body>
</html>




Acima que está o Button que clico e ai aparece o erro....


esse é o meu faces-config.xml

<?xml version='1.0' encoding='UTF-8'?>

<!-- =========== FULL CONFIGURATION FILE ================================== -->

<faces-config version="2.0"
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
    <managed-bean>
        <managed-bean-name>productFace</managed-bean-name>
        <managed-bean-class>myfirstjsfapp.managedbeans.ProductFace</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    <managed-bean>
        <managed-bean-name>salesFace</managed-bean-name>
        <managed-bean-class>myfirstjsfapp.managedbeans.SalesFace</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    <navigation-rule>
        <from-view-id>/welcomeJSF.jsp</from-view-id>
        <navigation-case>
            <from-outcome>gotoListProducts</from-outcome>
            <to-view-id>/products.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>
    <navigation-rule>
        <from-view-id>/products.jsp</from-view-id>
        <navigation-case>
            <from-outcome>gotoListProducts</from-outcome>
            <to-view-id>/products.jsp</to-view-id>
        </navigation-case>
        <navigation-case>
            <from-outcome>gotoAddNewProduct</from-outcome>
            <to-view-id>/addProduct.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>
    <navigation-rule>
        <from-view-id>/addProduct.jsp</from-view-id>
        <navigation-case>
            <from-outcome>gotoListProducts</from-outcome>
            <to-view-id>/products.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>
</faces-config>
Robson Morais

Robson Morais

Curtidas 0

Respostas

Robson Morais

Robson Morais

31/07/2013

Alguém ?
GOSTEI 0
POSTAR