Isah
Outubro 1, 2017, 3:05am
#1
Galera estou fazendo uma app para Java Web , quando mando os dados para cadastro aparece seguinte msg
Status 500 error
com a msg java.lang.NumberFormatException: null
e aki esta o servlet que cadastra
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
Exame exame;
String cmd = request.getParameter("cmd");
if (cmd.equalsIgnoreCase("cadastro")) {
PrintWriter out = response.getWriter();
// pegando os parâmetros do request
int codExame = Integer.parseInt(request.getParameter("codExame"));
String nome = request.getParameter("name");
String tipo = request.getParameter("type");
float valor = Float.parseFloat(request.getParameter("price"));
exame = new Exame(codExame, nome, tipo, valor);
try {
ExameDAO.getInstancia().salvar(exame);
} catch (SQLException ex) {
Logger.getLogger(ManterExame.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClassNotFoundException ex) {
Logger.getLogger(ManterExame.class.getName()).log(Level.SEVERE, null, ex);
}
Isah
Outubro 1, 2017, 3:07am
#2
A pagina de cadastro com extensão jsp esta :
${action} Cadastro Exame
<form name="cadastro" action="ManterExame?cmd=cadastro${operacao}" method="post">
<table>
Código:<input type="text" name="id" value="${exame.codExame}"<br />
Nome:<input type="text" name="name" value="${exame.nome}" <br/>
Tipo :
<select name="type" <c:if test="${exame == 'Excluir'}"> </c:if>>
<option value="${exame.tipo}" <selected></c:if>USG</option>
<option value="${exame.tipo}" <selected></c:if>RX</option>
<option value="${exame.tipo}" <selected></c:if>RM</option>
</select><br/>
Valor <input type="text" name="price" value="${exame.valor}" <br />
<input type="submit" name="btnSalvar" value="Confirmar" />
</form>
Não há nenhuma TAG com id="codExame", então o request.getParameter("codExame") retorna null.
Isah
Outubro 1, 2017, 1:58pm
#4
no caso eu tenho que coloar id no request ?
Isah
Outubro 1, 2017, 1:58pm
#5
No caso eu teria que colocar id em todos eles
Isah
Outubro 1, 2017, 2:21pm
#6
ficou assim :
Servelet:
String cmd = request.getParameter(“cmd”);
if (cmd.equalsIgnoreCase("cadastro")) {
PrintWriter out = response.getWriter();
// pegando os parâmetros do request
int codExame = Integer.parseInt(request.getParameter("id"));
String nome = request.getParameter("name");
String tipo = request.getParameter("type");
float valor = Float.parseFloat(request.getParameter("price"));
exame = new Exame(codExame, nome, tipo, valor);
try {
ExameDAO.getInstancia().salvar(exame);
} catch (SQLException ex) {
Logger.getLogger(ManterExame.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClassNotFoundException ex) {
Logger.getLogger(ManterExame.class.getName()).log(Level.SEVERE, null, ex);
}
pagina de cadastro
<form name="cadastro" action="ManterExame?cmd=cadastro${operacao}" method="post">
<table>
Código:<input type="text" name="id" value="${exame.codExame}"<br />
Nome:<input type="text" name="name" value="${exame.nome}" <br/>
Tipo :
<select name="type" <c:if test="${exame == 'Excluir'}"> </c:if>>
<option value="${exame.tipo}" <selected></c:if>USG</option>
<option value="${exame.tipo}" <selected></c:if>RX</option>
<option value="${exame.tipo}" <selected></c:if>RM</option>
</select><br/>
Valor <input type="text" name="price" value="${exame.valor}" <br />
<input type="submit" name="btnSalvar" value="Confirmar" />
</form>
e continua dando o mesmo erro
Talvez seu problema seja com o HTML.
Nas linhas:
Código:<input type="text" name="id" value="${exame.codExame}"<br />
Nome:<input type="text" name="name" value="${exame.nome}" <br/>
Valor <input type="text" name="price" value="${exame.valor}" <br />
Vc não fechou as tags input. Teria que ficar assim:
Código:<input type="text" name="id" value="${exame.codExame}"><br />
Nome:<input type="text" name="name" value="${exame.nome}"><br/>
Valor <input type="text" name="price" value="${exame.valor}"><br />
E tem também aquela tag table perdida ali. E tem aquelas tags <selected> que, na verdade, deveriam ser atributos e não tags (eu acho).
Aí vc usou <c:if> e </c:if>, não sei se vc usou certo porque nunca mexi direito com JSP, mas é bom dar uma revisada nelas pra ver se estão corretas.
Isah
Outubro 1, 2017, 3:25pm
#8
O table era que eu ia arrumar o layout e acabei não mechendo arrumei as tag como vc falou e nada cadastra no banco,não ta dando erro mas o link fica assim:
localhost:8080/Diagnostico/ManterExame?cmd=cadastro
as paginas estao jsp:
${cmd} Cadastro Exame
<form name="cadastro" action="ManterExame?cmd=${cmd}cadastro" method="post">
Código:<input type="text" name="codExame" value="${exame.codExame}"><br />
Nome:<input type="text" name="nome" value="${exame.nome}"><br> <br/>
Tipo :
<input name="tipo" type="text" value="${exame.tipo}"><br></br>
Valor <input type="text" name="valor" value="${exame.valor}" ><br />
<input type="submit" name="btnSalvar" value="Confirmar">
</form>
</body>
e o servlet
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
Exame exame;
String cmd = request.getParameter("cmd");
if (cmd.equalsIgnoreCase("cmd")) {
PrintWriter out = response.getWriter();
// pegando os parâmetros do request
int codExame = Integer.parseInt(request.getParameter("codExame"));
String nome = request.getParameter("nome");
String tipo = request.getParameter("tipo");
float valor = Float.parseFloat(request.getParameter("valor"));
exame = new Exame(codExame, nome, tipo, valor);
try {
ExameDAO.getInstancia().salvar(exame);
} catch (SQLException ex) {
Logger.getLogger(ManterExame.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClassNotFoundException ex) {
Logger.getLogger(ManterExame.class.getName()).log(Level.SEVERE, null, ex);
}
}
e a classe dao
public class ExameDAO {
private static final ExameDAO instancia= new ExameDAO() ;
public static ExameDAO getInstancia() {
return instancia;
}
public void salvar(Exame exame) throws SQLException, ClassNotFoundException {
Connection conn = null;
PreparedStatement st = null;
try {
conn = ConnectionSingleton.getInstance().getConnection();
st = conn.prepareStatement("INSERT INTO exame (codExame, nome, tipo,valor) VALUES (?, ?, ?,?)");
st.setInt(1, exame.getCodExame());
st.setString(2,exame.getNome());
st.setString(3,exame.getTipo());
st.setFloat(4, exame.getValor());
st.execute();
} catch(SQLException e) {
throw e;
} finally {
conn.close();
st.close();
}
}
porem nao insere nada no banco e eu preciso desse trabalho para amnha e tenho que implementar mais 10 padroes
Na primeira versão vc fez:
String cmd = request.getParameter("cmd");
if (cmd.equalsIgnoreCase("cadastro")) {
/* ... */
}
E no formulário:
<form name="cadastro" action="ManterExame?cmd=cadastro${operacao}" method="post">
Nesse último código vc mudou para:
String cmd = request.getParameter("cmd");
if (cmd.equalsIgnoreCase("cmd")) {
/* ... */
}
e
<form name="cadastro" action="ManterExame?cmd=${cmd}cadastro" method="post">
A primeira versão parece fazer mais sentido. Tenta voltar pra ela e ver se resolve algo.
Isah
Outubro 1, 2017, 4:34pm
#10
a primeira versao ta dando null poit excption
nao esta cadastrando nada mesmo quando nao da erro
Pensei que estava dando null pointer devido a má formação do HTML.
Na última versão vc consertou o HTML, mas fez outras modificações que parecem esquisitas.
Por exemplo, o parametro cmd nunca vai ser igual a “cmd”, logo, não entrará naquele if que mostrei no seu novo trecho.
Isah
Outubro 1, 2017, 5:28pm
#12
ok vou ver se começo outro projeto