Problema na injeção do repository spring boot no converter JSF

9 respostas Resolvido
jpajsfspring-bootjava
D

Boa tarde, galera. Estou com um problema, preciso pesquisar um produto pelo codigo no converter, pórem a pesquisa não esta funcionando, no controller funciona correctamente. Peço ajuda

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;
import javax.faces.convert.FacesConverter;

import org.springframework.beans.factory.annotation.Autowired;

import mz.co.ubi.model.Produto;
import mz.co.ubi.repository.ProdutoRepository;

@FacesConverter(forClass = Produto.class, value="produtoConverter")
public class ProdutoConverter implements Converter {

	@Autowired
	private ProdutoRepository produtoRepository;

	@Override
	public Object getAsObject(FacesContext context, UIComponent component, String value) {
		Produto retorno = new Produto();

		if (value != null && value.trim().length() > 0) {
			try {
				System.out.println("Valor do value "+value);
				return retorno = produtoRepository.listarPorCodigo(new Long(value));
			} catch (NumberFormatException e) {
				throw new ConverterException(
						new FacesMessage(FacesMessage.SEVERITY_ERROR, "Conversion Error", "Not a valid theme."));
			}
		} else {
			return null;
		}

	}

	@Override
	public String getAsString(FacesContext context, UIComponent component, Object value) {
		if (value != null) {
			Long codigo = ((Produto) value).getCodigo();
			String retorno = (codigo == null ? null : codigo.toString());

			return retorno;
		}

		return "";
	}
}

Repositorio Spring Boot

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import mz.co.ubi.model.Produto;

public interface ProdutoRepository extends JpaRepository<Produto, Long> {

	@Query("select p from Produto p inner join fetch p.isencao inner join fetch p.categoria c Where p.estado is true AND p.chaveEmpresa = :chave order by c.nome asc")
	List<Produto> listarActivos(@Param("chave") Long chave);

	@Query("select p from Produto p inner join fetch p.isencao inner join fetch p.categoria c Where p.estado is true AND p.codigo= :codigo")
	Produto listarPorCodigo(@Param("codigo") Long codigo);

	@Query("select p from Produto p inner join fetch p.isencao inner join fetch p.categoria c Where p.estado is true "
			+ "AND p.chaveEmpresa = :chave AND p.descricao LIKE %:descricao%")
	List<Produto> listarActivos(Long chave, String descricao);

	Produto findByDescricao(String value);
}

9 Respostas

L

O Spring e o JSF vivem em contextos separados, ou seja, componentes de um não se misturam com a gentalha do outro.

Se você quiser ver os componentes de ambos conversando, vc terá que configurar isso no projeto. Dê uma pesquisa sobre “spring jsf integration”.

D

O projecto, ja esta em produção a 2 anos praticamente Spring Boot Jsf, pórem estou fazendo uma actualização, preciso colocar o autocomplite do primefaces, esta funcionando pórem o converter não aceita injectar o repository

L

Tenta anotar o converter com @Component

D

N funcionou, este é o erro

java.lang.NullPointerException: null
	at mz.co.ubi.converter.ProdutoConverter.getAsObject(ProdutoConverter.java:30) ~[classes/:na]
	at org.primefaces.component.autocomplete.AutoComplete.convertValue(AutoComplete.java:550) ~[primefaces-6.2.jar:6.2]
	at org.primefaces.component.autocomplete.AutoComplete.queueEvent(AutoComplete.java:484) ~[primefaces-6.2.jar:6.2]
	at org.primefaces.behavior.ajax.AjaxBehaviorRenderer.decode(AjaxBehaviorRenderer.java:47) ~[primefaces-6.2.jar:6.2]
	at javax.faces.component.behavior.ClientBehaviorBase.decode(ClientBehaviorBase.java:134) ~[javax.faces-2.3.4.jar:2.3.4]
	at org.primefaces.renderkit.CoreRenderer.decodeBehaviors(CoreRenderer.java:588) ~[primefaces-6.2.jar:6.2]
	at org.primefaces.component.autocomplete.AutoCompleteRenderer.decode(AutoCompleteRenderer.java:62) ~[primefaces-6.2.jar:6.2]
	at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:858) ~[javax.faces-2.3.4.jar:2.3.4]
	at javax.faces.component.UIInput.decode(UIInput.java:822) ~[javax.faces-2.3.4.jar:2.3.4]
	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1263) ~[javax.faces-2.3.4.jar:2.3.4]
	at javax.faces.component.UIInput.processDecodes(UIInput.java:716) ~[javax.faces-2.3.4.jar:2.3.4]
	at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:630) ~[javax.faces-2.3.4.jar:2.3.4]
	at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183) ~[javax.faces-2.3.4.jar:2.3.4]
	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1736) ~[javax.faces-2.3.4.jar:2.3.4]
	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1747) ~[javax.faces-2.3.4.jar:2.3.4]
	at org.primefaces.component.api.UIData.visitColumnContent(UIData.java:1036) ~[primefaces-6.2.jar:6.2]
	at org.primefaces.component.api.UIData.visitRows(UIData.java:1010) ~[primefaces-6.2.jar:6.2]
	at org.primefaces.component.api.UIData.visitTree(UIData.java:865) ~[primefaces-6.2.jar:6.2]
	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1747) ~[javax.faces-2.3.4.jar:2.3.4]
	at javax.faces.component.UIForm.visitTree(UIForm.java:395) ~[javax.faces-2.3.4.jar:2.3.4]
	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1747) ~[javax.faces-2.3.4.jar:2.3.4]
	at javax.faces.component.UIComponent.visitTree(UIComponent.java:1747) ~[javax.faces-2.3.4.jar:2.3.4]
	at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:424) ~[javax.faces-2.3.4.jar:2.3.4]
	at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:285) ~[javax.faces-2.3.4.jar:2.3.4]
	at org.primefaces.context.PrimePartialViewContext.processPartial(PrimePartialViewContext.java:57) [primefaces-6.2.jar:6.2]
	at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:252) [javax.faces-2.3.4.jar:2.3.4]
	at org.omnifaces.context.OmniPartialViewContext.processPartial(OmniPartialViewContext.java:143) [omnifaces-1.14.1.jar:1.14.1]
	at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:1030) [javax.faces-2.3.4.jar:2.3.4]
	at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:79) [javax.faces-2.3.4.jar:2.3.4]
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) [javax.faces-2.3.4.jar:2.3.4]
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:201) [javax.faces-2.3.4.jar:2.3.4]
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:670) [javax.faces-2.3.4.jar:2.3.4]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [tomcat-embed-core-8.5.29.jar:8.5.29]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.29.jar:8.5.29]
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) [tomcat-embed-websocket-8.5.29.jar:8.5.29]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.29.jar:8.5.29]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.29.jar:8.5.29]
	at org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:185) [spring-orm-5.0.5.RELEASE.jar:5.0.5.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.5.RELEASE.jar:5.0.5.RELEASE]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.29.jar:8.5.29]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.29.jar:8.5.29]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320) [spring-security-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127) [spring-security-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91) [spring-security-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119) [spring-security-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137) [spring-security-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111) [spring-security-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
	at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:158) [spring-security-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170) [spring-security-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) [spring-security-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200) [spring-security-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116) [spring-security-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
	at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:66) [spring-security-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.5.RELEASE.jar:5.0.5.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105) [spring-security-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56) [spring-security-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.5.RELEASE.jar:5.0.5.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) [spring-security-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215) [spring-security-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178) [spring-security-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357) [spring-web-5.0.5.RELEASE.jar:5.0.5.RELEASE]
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270) [spring-web-5.0.5.RELEASE.jar:5.0.5.RELEASE]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.29.jar:8.5.29]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.29.jar:8.5.29]
	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) [spring-web-5.0.5.RELEASE.jar:5.0.5.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.5.RELEASE.jar:5.0.5.RELEASE]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.29.jar:8.5.29]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.29.jar:8.5.29]
	at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109) [spring-web-5.0.5.RELEASE.jar:5.0.5.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.5.RELEASE.jar:5.0.5.RELEASE]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.29.jar:8.5.29]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.29.jar:8.5.29]
	at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81) [spring-web-5.0.5.RELEASE.jar:5.0.5.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.5.RELEASE.jar:5.0.5.RELEASE]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.29.jar:8.5.29]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.29.jar:8.5.29]
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) [spring-web-5.0.5.RELEASE.jar:5.0.5.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.5.RELEASE.jar:5.0.5.RELEASE]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.29.jar:8.5.29]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.29.jar:8.5.29]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) [tomcat-embed-core-8.5.29.jar:8.5.29]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [tomcat-embed-core-8.5.29.jar:8.5.29]
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496) [tomcat-embed-core-8.5.29.jar:8.5.29]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) [tomcat-embed-core-8.5.29.jar:8.5.29]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) [tomcat-embed-core-8.5.29.jar:8.5.29]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [tomcat-embed-core-8.5.29.jar:8.5.29]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) [tomcat-embed-core-8.5.29.jar:8.5.29]
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) [tomcat-embed-core-8.5.29.jar:8.5.29]
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-embed-core-8.5.29.jar:8.5.29]
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790) [tomcat-embed-core-8.5.29.jar:8.5.29]
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) [tomcat-embed-core-8.5.29.jar:8.5.29]
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.29.jar:8.5.29]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.8.0_201]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.8.0_201]
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.29.jar:8.5.29]
	at java.lang.Thread.run(Unknown Source) [na:1.8.0_201]

e[2m2019-08-02 15:34:58.270e[0;39m e[33m WARNe[0;39m e[35m11092e[0;39m e[2m---e[0;39m e[2m[nio-8080-exec-3]e[0;39m e[36mj.e.resource.webcontainer.jsf.lifecycle e[0;39m e[2m:e[0;39m java.lang.NullPointerException
M

Olá @dgu

Anote o seu Converter com @Service e ve se vai

D

Recebo o mesmo erro
java.lang.NullPointerException: null
at mz.co.ubi.converter.ProdutoConverter.getAsObject(ProdutoConverter.java:32) ~[classes/:na]

L

Mano, tem esse jeito tb, testa ai:

ProdutoRepository produtoRepository = ApplicationContext.getBean(ProdutoRepository.class);

Não é a forma mais bonita, mas deve resolver para esse seu caso.

ApplicationContext é do Spring

T
Solucao aceita

Eu apanhei que so com isso tambem. A explicacao é relacionada ao contexto, mas nao lembro. Acho que no proprio manual do spring, quando voce usa o jsf com spring, tem essa solucao.

coloca um metodo pesquisarPorID no controller retornando o objeto, e recupe a classe controller dentro do converter. Um exemplo aqui.

@FacesConverter(forClass = Categoria.class)
public class CategoriaConverter implements Converter {

private final CategoriaController categoriaController;

public CategoriaConverter() {
    FacesContext context = FacesContext.getCurrentInstance();
    categoriaController = (CategoriaController) context.getELContext().getELResolver()
            .getValue(context.getELContext(), null, "categoriaController");
}

@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
    if (value.trim().equals("")) {
        return null;
    } else {
        return categoriaController.consultarPorID(Integer.valueOf(value));
    }
}

@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
    if (value == null || value.equals("")) {
        return "";
    } else {
        return String.valueOf(((Categoria) value).getId());
    }
  }
}
D

@Thimor muito obrigado a tua dica funcionou.
Agradeço também ao @Lucas_Camara e @Mike

Obrigado pela atenção me ajudaram muito

@FacesConverter(forClass = Produto.class, value = “produtoConverter”)
public class ProdutoConverter implements Converter {

private final ProdutoController produtoController;

public ProdutoConverter() {
	FacesContext context = FacesContext.getCurrentInstance();
	produtoController = (ProdutoController) context.getELContext().getELResolver().getValue(context.getELContext(),
			null, "produtoController");
}

@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
	Produto retorno = new Produto();

	if (value != null && value.trim().length() > 0) {
		try {
			retorno = produtoController.pesquisarPorCodigo(new Long(value));
			return retorno;

		} catch (NumberFormatException e) {
			throw new ConverterException(
					new FacesMessage(FacesMessage.SEVERITY_ERROR, "Conversion Error", "Not a valid theme."));
		}
	} else {
		return null;
	}

}

@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
	if (value != null) {
		Long codigo = ((Produto) value).getCodigo();
		String retorno = (codigo == null ? null : codigo.toString());

		return retorno;
	}

	return "";
}

}

Criado 2 de agosto de 2019
Ultima resposta 2 de ago. de 2019
Respostas 9
Participantes 4