Utilizando listShuttle com Seam

0 respostas
rafael.espiritosanto

Olá!

Estou tendo dificuldades em utilizar o componente listShuttle com o Seam.

Eis o trecho da página xhtml

<s:decorate id="usuariosField" template="/layout/display.xhtml">
				<ui:define name="label">#{messages['areaPesquisa.usuarios.label']}</ui:define>
				<rich:listShuttle id="usuarios"  sourceCaptionLabel="#{messages['areaPesquisa.usuarios.tabela.fonte.label']}"
								  var="_usuario" targetRequired="true" targetCaptionLabel="#{messages['areaPesquisa.usuarios.tabela.destino.label']}"
								  targetValue="#{areaPesquisa.usuarioList}"
								  sourceValue="#{administrarAreaPesquisaAction.listaUsuarios}"
								  converter="#{usuarioConverter}">
					<rich:column>
						<h:outputText value="#{_usuario.nome}" />
					</rich:column>				  
				</rich:listShuttle>
			</s:decorate>

O problema esta relacionado a classe que faz a conversão do objeto em string e vice-versa.

Esse é o código do converter

@Name("usuarioConverter")
@Converter
@BypassInterceptors
public class UsuarioConverter implements javax.faces.convert.Converter {

	@Logger
	private Log log;
	
	@In
	private EntityManager entityManager;
	
	@Override
	public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
		Usuario usuario = null;
		long id = Long.parseLong(arg2);
		
		if (entityManager != null) {
			usuario = (Usuario) entityManager.createQuery("select u from Usuario u where u.id = ?").setParameter(1, id).getSingleResult();
		} else {
			log.info("TA VINDO NULO!!");
		}
		
		return usuario;
	}

	@Override
	public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
		Usuario u = (Usuario) arg2;
		return Long.toString(u.getId());
	}

}
Inicialmente eu não utilizava a anotação @BypassInterceptors mas o JBoss se quer subia. Sem esta anotação é exibida a seguinte exceção.
org.jboss.deployers.spi.DeploymentException: URL vfsfile:/C:/jboss-5.0.0.GA/server/default/deploy/portalfees.ear/portalfees.war/ deployment failed
        at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeployInternal(TomcatDeployment.java:388)
        at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeploy(TomcatDeployment.java:146)
        at org.jboss.web.deployers.AbstractWarDeployment.start(AbstractWarDeployment.java:460)
        at org.jboss.web.deployers.WebModule.startModule(WebModule.java:118)
        at org.jboss.web.deployers.WebModule.start(WebModule.java:96)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:157)
        at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96)
        at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
        at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
        at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
        at org.jboss.system.microcontainer.ServiceProxy.invoke(ServiceProxy.java:206)
        at $Proxy36.start(Unknown Source)
        at org.jboss.system.microcontainer.StartStopLifecycleAction.installAction(StartStopLifecycleAction.java:42)
        at org.jboss.system.microcontainer.StartStopLifecycleAction.installAction(StartStopLifecycleAction.java:37)
        at org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62)
        at org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:71)
        at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51)
        at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
        at org.jboss.system.microcontainer.ServiceControllerContext.install(ServiceControllerContext.java:286)
        at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1598)
        at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
        at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1062)
        at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
        at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
        at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
        at org.jboss.system.ServiceController.doChange(ServiceController.java:688)
        at org.jboss.system.ServiceController.start(ServiceController.java:460)
        at org.jboss.system.deployers.ServiceDeployer.start(ServiceDeployer.java:146)
        at org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:104)
        at org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:45)
        at org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer.internalDeploy(AbstractSimpleRealDeployer.java:62)
        at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:50)
        at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:171)
        at org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:1439)
        at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1157)
        at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1178)
        at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1210)
        at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:1098)
        at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
        at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1598)
        at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
        at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1062)
        at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
        at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
        at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
        at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:781)
        at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:545)
        at org.jboss.system.server.profileservice.hotdeploy.HDScanner.scan(HDScanner.java:290)
        at org.jboss.system.server.profileservice.hotdeploy.HDScanner.run(HDScanner.java:221)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
        at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:619)
16:05:44,421 WARN  [HDScanner] Failed to process changes
org.jboss.deployers.client.spi.IncompleteDeploymentException: Summary of incomplete deployments (SEE PREVIOUS ERRORS FOR DETAILS):

No entanto, quando eu adiciono a anotação passo ter problemas com o DI do entityManager.
Sem o entityManager não tenho como recuperar o objeto.

Bom, como não tenho muito conhecimento em JSF e Seam, gostaria de saber se existe outra maneira de fazer a recuperação do objeto ou como conseguir uma instância do EntityManager.

Obrigado pela ajuda!

Criado 11 de junho de 2009
Respostas 0
Participantes 1