Provavelmente é o cast no setIdTelefone, tem certeza que o método recebe o tipo enviado?
Tente fazer o cast no método!
Galego_Henrique
romarcio:
Conforme a exceção lançada, o problema é esse:
The method getParameter(String) in the type ServletRequest is not applicable for the arguments (int)
Já tentei convertendo e não convertendo, mas não funciona.
Galego_Henrique
Provavelmente é o cast no setIdTelefone, tem certeza que o método recebe o tipo enviado?
Tente fazer o cast no método!
Falou grego pra mim. kkk
romarcio
Conforme seu 2° post, o erro é diferente do primeiro que eu tinha comentado:
java.lang.NumberFormatException:null
Parece que o numero de telefone está chegando com valor null e dai quando você tenta fazer essa conversão: Integer.parseInt(), é lançada a exceção.
Galego_Henrique
Fiz essa modificação, funcionou, mas é totalmente fora do que o professor havia mostrado, porém ele não estava conseguindo me ajudar... rsrs. Na linha 07, eu mudei o formato, não sei se é permitido.
Outra coisa, sua variável idTelefone da classe telefone é mesmo um int ou Integer?
E você está digitando apenas números na interface gráfica no campo do telefone?
Outra coisa, sua variável idTelefone da classe telefone é mesmo um int ou Integer?
E você está digitando apenas números na interface gráfica no campo do telefone?
O meu id é int, e no campo telefone é só número mesmo. Agora o código apareceu outro erro.
Mas você está tentando inserir o idTelefone ou o numero? Lá na jsp você está setando o numero do telefone na variável idTelefone e acho que deveria ser em numero.
Galego_Henrique
romarcio:
Agora que reparei que nos códigos anteriores o método Integer.parseint() está errado, é Integer.parseInt(), com Int e não int.
Mas no seu último exemplo você corrigiu isso, por isso deve ter funcionado.
Agora o valor está chegando e sendo inserido na variável idTelefone, pelo que parece o problema é com o banco de dados agora ao que tudo indica.
Poste o seu método de insert no banco de dados.
É esse o código:
packagedao;importjava.sql.*;importjava.util.List;importjava.util.ArrayList;publicclassAlunoDAO{ConnectionConn;StatementStmt;ResultSetRS;publicAlunoDAO(){try{Class.forName("org.gjt.mm.mysql.Driver").newInstance();Conn=DriverManager.getConnection("jdbc:mysql://localhost/lp2","root","");Stmt=Conn.createStatement();}catch(ExceptionE){E.printStackTrace();}}publicbooleaninserir(Alunoaluno){intx=1;Stringquery="insert into aluno values (0,'"+aluno.getNome()+"','"+aluno.getMatricula()+"',"+aluno.getTelefone().getIdTelefone()+")";try{x=Stmt.executeUpdate(query);}catch(ExceptionE){E.printStackTrace();}if(x==0){returntrue;}else{returnfalse;}}publicbooleanapagar(Alunoaluno){intx=1;Stringquery="delete from aluno where codigo = "+aluno.getIdAluno();try{x=Stmt.executeUpdate(query);}catch(ExceptionE){E.printStackTrace();}if(x==0){returntrue;}else{returnfalse;}}publicAlunobuscar(intidAluno){Stringquery="select * from aluno where codigo = "+idAluno;Alunoaluno=newAluno();try{RS=Stmt.executeQuery(query);RS.next();aluno.setIdAluno(RS.getInt(1));aluno.setNome(RS.getString(2));aluno.setMatricula(RS.getString(3));Telefonefone=newTelefone();fone.setIdTelefone(RS.getInt(4));aluno.setTelefone(fone);}catch(ExceptionE){E.printStackTrace();}returnaluno;}publicList<Aluno>buscarTodos(){Stringquery="select * from aluno";List<Aluno>alunos=newArrayList<Aluno>();Alunoaluno;try{RS=Stmt.executeQuery(query);while(RS.next()){aluno=newAluno();aluno.setIdAluno(RS.getInt(1));aluno.setNome(RS.getString(2));aluno.setMatricula(RS.getString(3));Telefonefone=newTelefone();fone.setIdTelefone(RS.getInt(4));aluno.setTelefone(fone);alunos.add(aluno);}}catch(ExceptionE){E.printStackTrace();}returnalunos;}publicbooleanalterar(Alunoaluno){intx=1;Stringquery="UPDATE aluno SET nome = '"+aluno.getNome()+"', matricula = '"+aluno.getMatricula()+"', codfone = "+aluno.getTelefone().getIdTelefone()+" WHERE codigo = "+aluno.getIdAluno()+"";try{x=Stmt.executeUpdate(query);}catch(ExceptionE){E.printStackTrace();}if(x==0){returntrue;}else{returnfalse;}}}
Galego_Henrique
romarcio:
Parece ok.
Mas você está tentando inserir o idTelefone ou o numero? Lá na jsp você está setando o numero do telefone na variável idTelefone e acho que deveria ser em numero.
Estou tentando inserir o telefone através do idtelefone, estou pensando bem OO, por causa daquela história, vai que um dia muda o último número de todos os telefones celulares igual aconteceu em SP, torna mais fácil modificar.
Mas em suma, é justamente nela que está dando o pipino, essas exceções, só dando null.
Galego_Henrique
Parece que agora funcionou, todas aqueles momentos que aparecia “null” acredito que já estava ok, mas o problema que só aceita se for pelo formulário, rodando diretamente pelo JSP não funciona. Será por quê, isso?
romarcio
Ok, mas você está enviando o idTelefone para o banco ou o número do telefone? O que você digita na interface e manda para o método setIdTelefone()?
romarcio
Outra coisa:String query = "insert into aluno values (0,'"+aluno.getNome()+"','"+aluno.getMatricula()+"',"+aluno.getTelefone().getIdTelefone()+")";
Você vai inserir 0 como id aluno toda vez que fizer o insert?
O MySql é autoincrento de chave, dai não precisa setar o id na hora de fazer o insert.