:? Galera, estou tendo problemas quando vou alterar os dados pela jsp… Quando eu escolho o item q quero alterar ele vai pro controle certinho e joga a jsp com os campos todos, só que quando eu altero algo e aperto alterar dá um erro!!!
Desde já muito grato pela ajuda!!!
[color=red]type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
java.lang.NumberFormatException: null
java.lang.Integer.parseInt(Unknown Source)
java.lang.Integer.(Unknown Source)
controle.ControleImpressoraAt.doPost(ControleImpressoraAt.java:24)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.30 logs.
[/color]
O código abaixo é o DaoImpressora:
[code]public void update(Impressora i) throws Exception {
open();
stmt = con.prepareStatement("UPDATE IMPRESSORA SET " + " NOME=?, MARCA=?, MODELO=?, CONEXAO=? " + " WHERE IDIMPRESSORA=?");
stmt.setString(1, i.getNome());
stmt.setString(2, i.getMarca());
stmt.setString(3, i.getModelo());
stmt.setString(4, i.getConexao());
stmt.setInt(5, i.getIdimpressora());
stmt.execute();
stmt.close();
close();
}
[/code]
O código abaixo é da jsp:
[code]
Cadastro de Impressora
<%@ page import=“entity.*,persistence.ImpressoraDao” %>
<%
String acao = request.getParameter(“action”);
Integer cod = new Integer(request.getParameter(“cod”));
Impressora i = new Impressora();
ImpressoraDao impd = new ImpressoraDao();
i = (Impressora) impd.findById(cod);
out.print("<tr>");
out.print("<td>Id da impressora no banco: " + "</td>" + "<td> <input name=nome size='20' readonly value='"+i.getIdimpressora()+"'/></td>");
out.print("</tr>");
out.print("<tr>");
out.print("<td>Nome da Impressora na Intranet: " + "</td>" + "<td> <input name=nome size='20' value='"+i.getNome()+"'/></td>");
out.print("</tr>");
out.print("<tr>");
out.print("<td>Marca da Impressora: " + "</td>" + "<td> <input name=marca size='20' value='"+i.getMarca()+"'/></td>");
out.print("</tr>");
out.print("<tr>");
out.print("<td>Modelo da Impressora: " + "</td>" + "<td> <input name=modelo size='20' value='"+i.getModelo()+"'/></td>");
out.print("</tr>");
out.print("<tr>");
out.print("<td> Conexão da Impressora: " + "</td>" + "<td> <select name=conexao>" + "<option value=''>" + "'" + i.getConexao() + "'" + "</option>" + "<option value=USB> USB </option>" + "<option value=Rede> Rede </option>" + "</select>" + "</td>" + "</tr>");%>
<tr>
<td> <br/> <input id="botao" type="button" value="Alterar Impressora" onclick="validaImpressora()"/> </td>
<td> <br/> <input id="botao" type="reset" value="Limpar"/> </td>
</tr>
<tr>
<td colspan="2"> <br/> <el> ${mensagem} </el> </td>
</tr>
</table>[/code]
Esse aqui é o metodo que coloquei na própria jsp pra filtrar erros de campos como colocar poucas letras nos campos. Depois de passado por esse método aí sim ele vai pro controle:
[code]
function validaImpressora()
{
f = document.form2;
if (f.nome.value.length < 3){
alert("O campo 'NOME' deve conter pelo menos 3 caracteres");
f.nome.focus();
} else if(f.marca.value.length < 2){
alert("O campo 'MARCA' deve conter pelo menos 2 caracteres");
f.marca.focus();
} else if(f.modelo.value.length < 2){
alert("O campo 'MODELO' deve conter pelo menos 2 caracteres");
f.modelo.focus();
} else if(f.conexao.value.length == ""){
alert("Selecione o tipo de conexão para a impressora");
f.conexao.focus();
} else{
f.submit();
}
}
</script>[/code]
Esse é do controle:
[code]protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Impressora i = new Impressora(new Integer(request.getParameter(“idimpressora”)), request.getParameter(“nome”), request.getParameter(“marca”),
request.getParameter(“modelo”),
request.getParameter(“conexao”)
);
try{
ImpressoraDao impd = new ImpressoraDao();
impd.update(i);
request.setAttribute(“mensagem”,“Dados Alterados”);
}catch(Exception e){
request.setAttribute(“mensagem”,e.getMessage());
}
request.getRequestDispatcher(“cadastroimpressora.jsp”).
forward(request,response);
}[/code]