Olá Pessoal!
Estou desenvolvendo uma tela de vendas em JSP, e ao inserir um item no detalhe da nota, surge o seguinte erro:
- no browser aparece o seguinte:
HTTP Status 500 - type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception java.lang.NullPointerException
br.com.jairo.dao.ItensVendaDAO.getListaItensVenda(ItensVendaDAO.java:74)
br.com.jairo.controle.VendaCRUD.processRequest(VendaCRUD.java:113)
br.com.jairo.controle.VendaCRUD.doGet(VendaCRUD.java:133)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.26 logs.
- No log da IDE netbeans informa o seguinte:
SEVERE: null
org.postgresql.util.PSQLException: Um erro de E/S ocorreu ao enviar para o processo servidor.
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:218)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:451)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:350)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:254)
at br.com.jairo.dao.ItensVendaDAO.getListaItensVenda(ItensVendaDAO.java:58)
at br.com.jairo.controle.VendaCRUD.processRequest(VendaCRUD.java:113)
at br.com.jairo.controle.VendaCRUD.doGet(VendaCRUD.java:133)
- Pagina JSP:
Nova Venda de Mercadorias
Codigo da Venda <input type="text" name="vencodigo" id="vencodigo" size="5" maxlength="" disabled="disabled" Value="<% if (request.getParameter("vencodigo") != null) { out.println(request.getParameter("vencodigo")); } else if (request.getAttribute("sessaoUltimoRegistroVenda") != null) { out.println(request.getAttribute("sessaoUltimoRegistroVenda")); } %>"
/>
<label for="vendata">Data da Venda</label>
<input type="date" name="vendata" id="vendata" value="${param.vendata}" /><br/>
<label for="clicodigo">Codigo do Cliente</label>
<input type="text" name="clicodigo" id="clicodigo" size="5" value="${param.clicodigo}"/>
<select name="selectCliente" id="selectCliente">
<tagsJairo:listaClienteSelect/>
</select><br/>
<label for="venvalortotal">Valor Total da Venda</label>
<input type="text" name="venvalortotal" id="venvalortotal" value="${param.venvalortotal}" />
<input type="hidden" name="acao" value="novo" />
<input type="submit" value="Gerar Venda e Inserir Itens na Nota" />
>
Produtos da Venda
Sequencia Codigo da Venda <input type="text" name="vencodigo" id="vencodigo" Value="<% if (request.getParameter("vencodigo") != null) { out.println(request.getParameter("vencodigo")); } else if (request.getAttribute("sessaoUltimoRegistroVenda") != null) { out.println(request.getAttribute("sessaoUltimoRegistroVenda")); }%>" readonly="readonly"/><br/>
<label for="prodcodigo">Codigo do Produto</label>
<input type="text" name="prodcodigo" id="prodcodigo" size="5" value="${param.prodcodigo}"/>
<select name="selectProduto" id="selectProduto">
<tagsJairo:listaProdutoSelect/>
</select><br/>
<label for="venquantidade">Quantidade</label>
<input type="text" name="venquantidade" id="venquantidade" value="${param.venquantidade}"/>
<label for="ventotal">Total</label>
<input type="text" name="ventotal" id="ventotal" value="${param.ventotal}"/>
<input type="hidden" name="codigovenda" value="<%
if (request.getAttribute("sessaoUltimoRegistroVenda") != null) {
out.println(request.getAttribute("sessaoUltimoRegistroVenda"));
}
%>" />
<input type="hidden" name="clicodigo" id="clicodigo" value="${param.clicodigo}"/>
<input type="hidden" name="vendata" id="vendata" value="${param.vendata}" />
<input type="hidden" name="venvalortotal" id="venvalortotal" value="${param.venvalortotal}" />
<input type="hidden" name="acao" value="novoItemVenda" />
<input type="submit" value="Inserir" /><br>
<%
if (request.getAttribute("sessaoListaItensVenda") != null) {
java.util.List listaItensVenda = (java.util.List) request.getAttribute("sessaoListaItensVenda");
out.println("<table border='1'>");
out.println("<tr><td>Sequencia</td><td>Numero da NF</td><td>Codigo do Produto</td><td>Quantidade</td><td>Total</td></tr>");
for (java.util.Iterator iterator = listaItensVenda.iterator(); iterator.hasNext();) {
br.com.jairo.modelo.ItensVenda itensVenda = (br.com.jairo.modelo.ItensVenda) iterator.next();
out.println("<tr>");
String sequencia = String.valueOf(itensVenda.getItensCodigo());
String nf = String.valueOf(itensVenda.getVenCodigo());
String produto = String.valueOf(itensVenda.getProdCodigo());
String quantidade = String.valueOf(itensVenda.getVenQuantidade());
String total = String.valueOf(itensVenda.getVenTotal());
out.println("<td>" + sequencia + "</td>");
out.println("<td>" + nf + "</td>");
out.println("<td>" + produto + "</td>");
out.println("<td>" + quantidade + "</td>");
out.println("<td>" + total + "</td>");
out.println("</tr>");
}
out.println("</table>");
}
%>
- no servlet:
public class VendaCRUD extends HttpServlet {
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, ParseException, SQLException {
String venCodigo = request.getParameter("vencodigo");
String venData = request.getParameter("vendata");
String cliCodigo = request.getParameter("clicodigo");
String venValorTotal = request.getParameter("venvalortotal");
RequestDispatcher rd = null;
Vendas vendas = new Vendas();
if (venCodigo != null) {
vendas.setVenCodigo(Integer.parseInt(venCodigo));
}
DateFormat formatoData = new SimpleDateFormat("dd/MM/yyyy");
if (venData != null) {
Date venDataFormatada = formatoData.parse(venData);
vendas.setVenData(venDataFormatada);
}
if (cliCodigo != null) {
vendas.setCliCodigo(Integer.parseInt(cliCodigo));
}
if (venValorTotal != null) {
vendas.setVenValorTotal(Double.parseDouble(venValorTotal));
}
VendaDAO vendaDAO = new VendaDAO();
String codigoVenda = request.getParameter("vencodigo");
String prodCodigo = request.getParameter("prodcodigo");
String venQuantidade = request.getParameter("venquantidade");
String venTotal = request.getParameter("ventotal");
ItensVenda itensVenda = new ItensVenda();
if (codigoVenda != null) {
itensVenda.setVenCodigo(Integer.parseInt(codigoVenda));
}
if (prodCodigo != null) {
itensVenda.setProdCodigo(Integer.parseInt(prodCodigo));
}
if (venQuantidade != null) {
itensVenda.setVenQuantidade(Integer.parseInt(venQuantidade));
}
if (venTotal != null) {
itensVenda.setVenTotal(Double.parseDouble(venTotal));
}
ItensVendaDAO itensVendaDAO = new ItensVendaDAO();
//verificar qual é a ação
String acao = request.getParameter("acao");
if (acao == null) {
acao = "listarVenda";
}
if (acao.equals("alterar")) {
//clienteDAO.alteraCliente(clientes);
//rd = request.getRequestDispatcher("/ClienteCRUD?acao=listarCliente");
} else if (acao.equals("excluir")) {
//clienteDAO.excluiCliente(clientes);
//rd = request.getRequestDispatcher("/ClienteCRUD?acao=listarCliente");
} else if (acao.equals("novo")) {
vendaDAO.novaVenda(vendas);
request.setAttribute("sessaoUltimoRegistroVenda", vendaDAO.ultimoRegistro());
rd = request.getRequestDispatcher("/venda.jsp");
} else if (acao.equals("novoItemVenda")) {
itensVendaDAO.novoItemVenda(itensVenda);
List listaItensVenda = itensVendaDAO.getListaItensVenda(Integer.parseInt(codigoVenda));
request.setAttribute("sessaoListaItensVenda", listaItensVenda);
//request.setAttribute("sessaoUltimoRegistroVenda", vendaDAO.ultimoRegistro());
rd = request.getRequestDispatcher("/venda.jsp");
}
rd.forward(request, response);
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
processRequest(request, response);
} catch (ParseException ex) {
Logger.getLogger(VendaCRUD.class.getName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
Logger.getLogger(VendaCRUD.class.getName()).log(Level.SEVERE, null, ex);
}
}
/**
* Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
processRequest(request, response);
} catch (ParseException ex) {
Logger.getLogger(VendaCRUD.class.getName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
Logger.getLogger(VendaCRUD.class.getName()).log(Level.SEVERE, null, ex);
}
}
/**
* Returns a short description of the servlet.
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
- no DAO:
public class ItensVendaDAO {
private Connection connection;
public ItensVendaDAO() {
this.connection = new ConnectionFactory().getConnection();
}
//metodo para incluir novo item da venda
public void novoItemVenda(ItensVenda itensVendas) throws SQLException {
String sql = "insert into itensvenda (vencodigo, prodcodigo, venquantidade, ventotal) values(?,?,?,?)";
PreparedStatement ps = null;
try {
ps = connection.prepareStatement(sql);
ps.setInt(1, itensVendas.getVenCodigo());
ps.setInt(2, itensVendas.getProdCodigo());
ps.setInt(3, itensVendas.getVenQuantidade());
ps.setDouble(4, itensVendas.getVenTotal());
//System.out.println("SQL Novo Item Venda->"+ps.toString());
ps.execute();
} catch (SQLException ex) {
Logger.getLogger(VendaDAO.class.getName()).log(Level.SEVERE, null, ex);
} finally {
connection.close();
ps.close();
}
}
//metodo que retorna a lista de itens vendidos do banco de dados
public List getListaItensVenda(int codigoVenda) throws SQLException {
String sql = "select * from itensvenda where vencodigo = "+codigoVenda;
PreparedStatement ps = null;
ResultSet rs = null;
List<ItensVenda> listaItensVenda = new ArrayList<ItensVenda>();
try {
ps = connection.prepareStatement(sql);
rs = ps.executeQuery();
while (rs.next()) {
ItensVenda itensVenda = new ItensVenda();
itensVenda.setItensCodigo(rs.getInt("itenscodigo"));
itensVenda.setVenCodigo(rs.getInt("vencodigo"));
itensVenda.setProdCodigo(rs.getInt("prodcodigo"));
itensVenda.setVenQuantidade(rs.getInt("venquantidade"));
itensVenda.setVenTotal(rs.getDouble("ventotal"));
listaItensVenda.add(itensVenda);
}
return listaItensVenda;
} catch (SQLException er) {
Logger.getLogger(ItensVendaDAO.class.getName()).log(Level.SEVERE, null, er);
} finally {
connection.close();
ps.close();
rs.close();
}
return null;
}
}
- no MODEL
public class ItensVenda {
private int itensCodigo;
private int venCodigo;
private int prodCodigo;
private int venQuantidade;
private double venTotal;
/**
* @return the itensCodigo
*/
public int getItensCodigo() {
return itensCodigo;
}
/**
* @param itensCodigo the itensCodigo to set
*/
public void setItensCodigo(int itensCodigo) {
this.itensCodigo = itensCodigo;
}
/**
* @return the venCodigo
*/
public int getVenCodigo() {
return venCodigo;
}
/**
* @param venCodigo the venCodigo to set
*/
public void setVenCodigo(int venCodigo) {
this.venCodigo = venCodigo;
}
/**
* @return the prodCodigo
*/
public int getProdCodigo() {
return prodCodigo;
}
/**
* @param prodCodigo the prodCodigo to set
*/
public void setProdCodigo(int prodCodigo) {
this.prodCodigo = prodCodigo;
}
/**
* @return the venQuantidade
*/
public int getVenQuantidade() {
return venQuantidade;
}
/**
* @param venQuantidade the venQuantidade to set
*/
public void setVenQuantidade(int venQuantidade) {
this.venQuantidade = venQuantidade;
}
/**
* @return the venTotal
*/
public double getVenTotal() {
return venTotal;
}
/**
* @param venTotal the venTotal to set
*/
public void setVenTotal(double venTotal) {
this.venTotal = venTotal;
}
}
Alguem pode me ajudar a corrigir este erro?!