(Resolvido) Erro ao tentar graver dados do campo salario

7 respostas
N

Colegas,
abaixo o erro ao cliar no botão submit do formulario

[#|2011-12-28T10:59:00.277-0300|WARNING|glassfish3.1.1|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=34;_ThreadName=Thread-2;|StandardWrapperValve[aula02.CadastrarFuncionarioServlet]: PWC1406: Servlet.service() for servlet aula02.CadastrarFuncionarioServlet threw exception
java.lang.NullPointerException
	[b]at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1008)
	at java.lang.Double.parseDouble(Double.java:540)[/b]
	at aula02.CadastrarFuncionarioServlet.doService(CadastrarFuncionarioServlet.java:51)
	at aula02.CadastrarFuncionarioServlet.doPost(CadastrarFuncionarioServlet.java:85)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
	at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174)
	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)
	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)
	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
	at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
	at java.lang.Thread.run(Thread.java:722)
|#]
Entendi que o problema talvez seja aqui
java.lang.NullPointerException
	[b]at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1008)
	at java.lang.Double.parseDouble(Double.java:540)[/b]
	at aula02.CadastrarFuncionarioServlet.doService(CadastrarFuncionarioServlet.java:51)
	at aula02.CadastrarFuncionarioServlet.doPost(CadastrarFuncionarioServlet.java:85)
Mas não sei como resolver, estou postando a classe e o método para mostrar mais claro a situação: Classe
import java.util.Date;

public class Funcionario {
	private String nome;
	private Date nascimento;
	private Double salario;
	private Character sexo;
	private Boolean temporario;
		
	public Funcionario(){
		
	}

	public Funcionario(String nome, Date nascimento, Double salario,
			Character sexo, Boolean temporario) {
		super();
		this.nome = nome;
		this.nascimento = nascimento;
		this.salario = salario;
		this.sexo = sexo;
		this.temporario = temporario;
	}



	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public Date getNascimento() {
		return nascimento;
	}

	public void setNascimento(Date nascimento) {
		this.nascimento = nascimento;
	}

	public Double getSalario() {
		return salario;
	}

	public void setSalario(Double salario) {
		this.salario = salario;
	}
	
	public Character getSexo() {
		return sexo;
	}


	public void setSexo(Character sexo) {
		this.sexo = sexo;
	}

	public Boolean getTemporario() {
		return temporario;
	}

	public void setTemporario(Boolean temporario) {
		this.temporario = temporario;
	}
	

}
Método
private void doService(HttpServletRequest request,
			HttpServletResponse response)  throws ServletException, IOException{
		
		String nome = request.getParameter("nome");
		String sNascimento = request.getParameter("nascimento");
		String sSalario = request.getParameter("salario");
		String sSexo = request.getParameter("sexo");
		String sTemporario = request.getParameter("temporario");
		
		Funcionario funcionario = null;		
		DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
		try {			
			Date nascimento = df.parse(sNascimento);
			Double salario = Double.parseDouble(sSalario);
			Character sexo = sSexo.charAt(0);
			Boolean temporario = Boolean.parseBoolean(sTemporario);
			funcionario = new Funcionario(nome, nascimento, salario, sexo, temporario);
					
			
			
		} catch (Exception e) {
			throw new ServletException(e);
		}
		
		if (funcionario != null){
			Dados.cadastrarFuncionario(funcionario);
			
			response.setContentType("text/html");
			PrintWriter out = response.getWriter();
			out.write("<html><head><title>Funcionários cadastrados</title></head></body>");
			out.write("<h1>Funcionários cadastrados</h1><ol>");
			
			List<Funcionario> lista = Dados.listarFuncionarios();
			for(Funcionario f: lista) out.write("<li><p>" + f.getNome() + "</p></li>");
			out.write("</ol>");
					
			out.write("<p><hr /></p><a href='index.html'>Formulario de Cadastro</a></p></body></html>");
			out.close();
		}
		
		
	}

Desde já agradeço sua ajuda!

7 Respostas

Hebert_Coelho

O que tem nessa linha?
at aula02.CadastrarFuncionarioServlet.doService(CadastrarFuncionarioServlet.java:51)

gilmar_soares

Amigo, Boa tarde.

Na hora de converter essa String não esta enviando “,” no lugar de “.”?

suaString.replaceAll(",", ".");
valorDouble = Double.parseDouble( suaString );

Talvez possa ser isso.

Desculpe se não ajudar, não conheço tanto :slight_smile:

Abraços!

N

Essa linha aponta para essa parte:

Fiz a conversão conforme indicado:

suaString.replaceAll(",", ".");  
    valorDouble = Double.parseDouble( suaString );

mas não resolveu.

Na linha at aula02.CadastrarFuncionarioServlet.doService(CadastrarFuncionarioServlet.java:51)

Double salario = Double.parseDouble(sSalario);
OliveirakunJava

Como a exceção é do tipo NullPointerException, provavelmente nessa linha o valor do parâmetro salario está vindo como null:

String sSalario = request.getParameter("salario");
Hebert_Coelho

Verifique se sSalario tem valor. Pode ser que está null e nisso ele levanta esse erro.

N

Obrigado,
vocês tinham razão. Verifiquei o nome do campo no formulario e vi que o nome esta Salario ao invés de salario.
Obrigado!

gilmar_soares

Opa!

Legal amigo, bom trabalho ai…

Abraços!

Criado 28 de dezembro de 2011
Ultima resposta 28 de dez. de 2011
Respostas 7
Participantes 4