[RESOLVIDO] Erro ao chamar ManagedBean com JSF2

1 resposta
F

Bom Dia Galera,

To com um problema chato, poderiam me ajudar?

Tenho um xhtml, que chama dois ManagedBean, um eu uso como repositório de dados, com ViewScope e outro managedBean com RequestScope, para fazer as ações da página.
Quando o xhtml faz uma ação de salvar de salvar, ocorre o seguinte erro:

HTTP Status 500 -

type Exception report

message

descriptionThe server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Não é possível definir a propriedade metaTagBean para o bean gerenciado metaTagController.
root cause

com.sun.faces.mgbean.ManagedBeanCreationException: Não é possível definir a propriedade metaTagBean para o bean gerenciado metaTagController.
root cause

javax.el.ELException: java.lang.IllegalArgumentException: Cannot convert metaTagBean of type class java.lang.String to class br.com.correiodelins.web.metaTags.MetaTagBean
root cause

java.lang.IllegalArgumentException: Cannot convert metaTagBean of type class java.lang.String to class br.com.correiodelins.web.metaTags.MetaTagBean

+++++++++++++++++++++

WARNING: PWC4011: Unable to set request character encoding to UTF-8 from context /CorreioDeLinsWeb, because request parameters have already been read, or ServletRequest.getReader() has already been called
WARNING: Não é possível definir a propriedade metaTagBean para o bean gerenciado metaTagController.
com.sun.faces.mgbean.ManagedBeanCreationException: Não é possível definir a propriedade metaTagBean para o bean gerenciado metaTagController.
	at com.sun.faces.mgbean.ManagedBeanBuilder$BakedBeanProperty.set(ManagedBeanBuilder.java:615)
	at com.sun.faces.mgbean.ManagedBeanBuilder.buildBean(ManagedBeanBuilder.java:133)
	at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:104)
	at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:409)
	at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269)
	at com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:244)
	at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:116)
	at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
	at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
	at com.sun.el.parser.AstIdentifier.getValue(AstIdentifier.java:103)
	at com.sun.el.parser.AstValue.getTarget(AstValue.java:149)
	at com.sun.el.parser.AstValue.invoke(AstValue.java:237)
	at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:302)
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	at javax.faces.component.UICommand.broadcast(UICommand.java:315)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1542)
	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 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
	at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849)
	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746)
	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045)
	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228)
	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)
Caused by: javax.el.ELException: java.lang.IllegalArgumentException: Cannot convert metaTagBean of type class java.lang.String to class br.com.correiodelins.web.metaTags.MetaTagBean
	at com.sun.el.ExpressionFactoryImpl.coerceToType(ExpressionFactoryImpl.java:73)
	at com.sun.faces.el.ELUtils.coerce(ELUtils.java:536)
	at com.sun.faces.mgbean.BeanBuilder$Expression.evaluate(BeanBuilder.java:592)
	at com.sun.faces.mgbean.ManagedBeanBuilder$BakedBeanProperty.set(ManagedBeanBuilder.java:606)
	... 46 more

Aparentemente não acha o ManagedBean.

Segue o xhtml e os managedBean:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:p="http://primefaces.org/ui"
	xmlns:f="http://java.sun.com/jsf/core">

<ui:composition template="/admin/template/template.xhtml">
	
	<ui:define name="conteudo">
	
		<h:form id="form">
	
			<h:panelGroup id="novaTag" layout="block" style="float:left;">
				
				<h:panelGrid id="gridNovaTag" columns="1" cellspacing="10">
					
					<h:outputLabel id="outputLabelTag" value="Tag" for="inputTextTag"/>
					<p:inputText id="inputTextTag" value="#{metaTagBean.metaTag.tag}" size="150" />
					
					<h:panelGroup style="float:right;">
						
						<p:commandButton id="commandButtonLimpar" value="Limpar" icon="ui-icon-document"/>
						<p:commandButton id="commandButtonExcluir" value="Excluir" icon="ui-icon-trash"/>
						<p:commandButton id="commandButtonAlterar" value="Alterar" icon="ui-icon-copy"/>
						<p:commandButton id="commandButtonSalvar" value="Salvar" action="#{metaTagController.salvar}" ajax="false" icon="ui-icon-check" update="dataTable"/>
						
					</h:panelGroup>
					
				</h:panelGrid>
				
			</h:panelGroup>
	
			<h:panelGroup id="listarTags" layout="block" style="width:500px; float:right;">
				
				<p:dataTable id="dataTable" var="tags" value="#{metaTagBean.metaTags}" rows="10" paginator="true"
					rowKey="#{tags.id}" selection="#{metaTagBean.metaTag}" selectionMode="single">  
					
					<p:ajax event="rowSelect" update=":form:gridNovaTag" />  
			        
			        <f:facet name="header">
			            Tags Cadastradas 
			        </f:facet>  
			  
			        <p:column id="tagNome" sortBy="#{tags.tag}" filterBy="#{tags.tag}">  
			            <f:facet name="header">  
			                <h:outputText value="Tag" />  
			            </f:facet>  
			            <h:outputText value="#{tags.tag}" />  
			        </p:column>  
			  
			    </p:dataTable> 
				
			</h:panelGroup>
			
		</h:form>
	
	</ui:define>
	
</ui:composition>
</html>



@ManagedBean
public class MetaTagController {
	
	@EJB
	private MetaTagBusinessRemote metaTagBusiness;
	
	@ManagedProperty("metaTagBean")
	private MetaTagBean metaTagBean;
	
	public MetaTagController(){
		
	}
	
	public void salvar(){
		if(this.valida(this.metaTagBean.getMetaTag())){
			try{
				this.metaTagBusiness.salvar(this.metaTagBean.getMetaTag());
				FacesUtils.getFacesMessage(FacesMessage.SEVERITY_INFO, "Sucesso", "Tag Salva com sucesso");
			}catch (TagJaCadastradaException e) {
				FacesUtils.getFacesMessage(FacesMessage.SEVERITY_INFO, "Erro", "Tag já cadastrada");
			}catch (Exception e) {
				e.printStackTrace();
			}			
		}
	}
	
	public boolean valida(MetaTag metaTag) {
		if(metaTag == null){
			return false;
		}
		if(metaTag.getTag().equals("")){
			FacesUtils.getFacesMessage(FacesMessage.SEVERITY_ERROR, "Erro", "Preencha o campo 'Tag' corretamente");
			return false;
		}
		return true;
	}

	public MetaTagBean getMetaTagBean() {
		return metaTagBean;
	}

	public void setMetaTagBean(MetaTagBean metaTagBean) {
		this.metaTagBean = metaTagBean;
	}	
}


@ManagedBean
@ViewScoped
public class MetaTagBean {
	private MetaTag metaTag;
	private List<MetaTag> metaTags;
	
	@EJB
	private MetaTagBusinessRemote metaTagBusiness;
	
	public MetaTagBean(){
		
	}

	public MetaTag getMetaTag() {
		if(this.metaTag == null){
			this.metaTag = new MetaTag();
		}
		return metaTag;
	}

	public void setMetaTag(MetaTag metaTag) {
		this.metaTag = metaTag;
	}

	public List<MetaTag> getMetaTags() {
		try{
			if(this.metaTags == null){
				this.metaTags = this.metaTagBusiness.listar();
			}
		}catch (Exception e) {
			e.printStackTrace();
		}
		return metaTags;
	}

	public void setMetaTags(List<MetaTag> metaTags) {
		this.metaTags = metaTags;
	}
}

Agradeço a atenção.

1 Resposta

F

Vacilei,

Esqueci de colocar um EL no @ManagedProperty.

Deve ficar assim:

@ManagedProperty("#{metaTagBean}") private MetaTagBean metaTagBean;

e não

@ManagedProperty("metaTagBean")
private MetaTagBean metaTagBean;

Dessa forma consigo injetar um ManagedBean em outro.

Criado 25 de dezembro de 2012
Ultima resposta 25 de dez. de 2012
Respostas 1
Participantes 1