[RESOLVIDO] Erro ao chamar ManagedBean com JSF2

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.

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.

1 curtida