Problema ao tentar atualizar meu formulario JSF

1 resposta
javajsfprimefaces
Dayson_Rodrigues

estou tentando atualizar meu formulário mais estou com um problema.

Meu Conversor

package com.irmaosuspension.controleservico.converter;
import javax.faces.component.UIComponent;

import javax.faces.context.FacesContext;

import javax.faces.convert.Converter;

import javax.faces.convert.FacesConverter;
import com.irmaosuspension.controleservico.cdi.CDIServiceLocator;

import com.irmaosuspension.controleservico.dao.FabricanteDAO;

import com.irmaosuspension.controleservico.modelo.Fabricante;

@FacesConverter(forClass = Fabricante.class)
public class FabricanteConverter implements Converter {

private FabricanteDAO dao;

public FabricanteConverter() {
	dao = CDIServiceLocator.getBean(FabricanteDAO.class);
}

public Object getAsObject(FacesContext arg0, UIComponent arg1, String value) {
	Fabricante fabricante = null;

	if (value != null) {
		Long code = new Long(value);
		fabricante = dao.buscarPeloCodigo(code);
	}
	return fabricante;
}

public String getAsString(FacesContext arg0, UIComponent arg1, Object value) {

	if (value != null) {
		Long code = ((Fabricante) value).getCodigo();
		String retorno = (code == null ? null : value.toString());

		return retorno;
	}
	return "";
}

}

Erro

java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Long.parseLong(Long.java:601)
at java.lang.Long.<init>(Long.java:965)
at com.irmaosuspension.controleservico.converter.FabricanteConverter.getAsObject(FabricanteConverter.java:25)
at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:171)
at javax.faces.component.UIViewParameter.getConvertedValue(UIViewParameter.java:437)
at javax.faces.component.UIInput.validate(UIInput.java:975)
at javax.faces.component.UIInput.executeValidate(UIInput.java:1248)
at javax.faces.component.UIInput.processValidators(UIInput.java:712)
at javax.faces.component.UIViewParameter.processValidators(UIViewParameter.java:278)
at org.omnifaces.component.input.ViewParam.processValidators(ViewParam.java:120)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261)
at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1195)
at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:495)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:767)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1347)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)

1 Resposta

drsmachado

Sabe a que se refere esta mensagem?
Você está tentando converter uma String vazia ("") em um número (int, long, double, etc). Obviamente, uma String vazia não representa um valor numérico.
Das duas uma, ou você coloca um try/catch no Conversor e retorna exception caso ocorra input de String vazia ou recebe o valor em uma String, valida se a mesma é vazia e daí trata como achar melhor.

Criado 10 de março de 2017
Ultima resposta 11 de mar. de 2017
Respostas 1
Participantes 2