JBoss Seam JSF (rendered de componentes)

Olá,

To com uma dúvida, tenho componentes que são renderizados somente atendendo a um certo critério. O problema que notei quando uso o rendered é que os valores não são recuperados na Action.

Tipo, tenho um select:

                                <h:selectOneMenu
                                        id="planId"
                                        style="width:219px"
                                        required="true"
                                        rendered="#{empty affiliation.code}"
                                        onchange="findPlanById(this.value)"
                                        value="#{plan.id}">
                                    <f:selectItem itemValue="" itemLabel="Selecione..." />
                                    <f:selectItems value="#{accountAction.availablePlans}" />
                                </h:selectOneMenu>

O problema é que quando eu vou chamar um método o valor de “plan.id” vem null mas se eu tiro o “rendered” ele vem certo. Porque esse comportamento do JSF? Eu solucionei isso usando o style display none, mas não acho a melhor solução visto que o html é gerado sempre.

Obrigado.

Esse é o comportamento padrão, rendered quer dizer renderizado ou seja, se o parser do JSF vai trasformar aquela determinada Taglib em uma tag HTML padrão, se ele não é renderizado ele não existe na árvore.

Não entendo o porquê de você não renderizá-lo e mesmo assim querer o valor?!

Imaginei que fosse por questão comportamental.

Na verdade eu não quero o valor do componente quando ele não for renderizado mas sim quando ele for renderizado. É somente neste momento que necessito do valor. Mas mesmo assim ele não vem, mesmo quando renderizado o valor do campo não vem. Achei estranho esse comportamento, pois a partir do momento que ele é criado no html ele não deveria existir na árvore?

Ok, os options são gerados no HTML certinho?! Dê uma olhada no HTML, como você populou a lista

accountAction.availablePlans

Outra coisa que me chamou a atenção, o que esse método faz findPlanById(this.value)!!!

Thiago,

são gerados certos sim.

Esse evento ai é um @WebRemote que faço. Na verdade ao selecionar a combo ele busca detalhes sobre o item selecionado. Por isso esse “onchange” ai.

Método que monta meu select.

public List<SelectItem> getAvailablePlans() {
        List<Map> result = em.createQuery("//select").getResultList();
        if (!result.isEmpty()) {
            List<SelectItem> plans = new ArrayList<SelectItem>(result.size());
            for (Map map : result) {
                plans.add(new SelectItem(map.get("id"), (String) map.get("name")));
            }

            return plans;
        }
        return new ArrayList<SelectItem>(0);
    }

Certo, tente dar uma olhada no richfaces que ele possui a implementação ajax para JSF (se for o caso), mas como você chama esse WebService?! Como você passa o parâmetro?!

Se você quer passar o valor selecionado via JS você deve fazer

Na tua página faça

Thiago,

Na verdade o método que traz os detalhes do item selecionado funciona normalmente. A função javascript que uso ai é essa:

function findPlanById(id){
        if(id != '') {
            var affiliationAction = Seam.Component.getInstance("affiliationAction");
            affiliationAction.findPlanById(id, _cb, _exceptionHandler);
        } else {
            _cb({description : '', price : ''});
        }
    }
    function _cb(plan){
        jq("span:[id$='planValue']").text(plan.price);
        jq("textarea[id$='planDescription']").val(plan.description);
    }

Isso funciona de boa. O único problema é que quando eu chamo o seguinte método:

<a4j:commandButton
                                        value="#{affiliation.id == null ? messages['view.registerNew'] : messages['view.saveChanges']}"
                                        action="#{affiliationAction.save(affiliation, plan)}"/>

Lá no método “save” da minha action o parâmetro “plan” chega com id null. Mas isso só quando eu tenho o atributo “rendered” no “<h:selectOneMenu”. Quando não tenho esse atributo, o valor chega tranquilo la.

Tem um artigo, acredito que no site do myfaces sobre como trabalhar com o atributo rendered e ajax 4 jsf pode ser esse o problema, dá uma vasculhada no wiki deles! Se eu achar o artigo eu posto aqui o link!

Ok amigo talvez não faça parte da discussão o que eu vou falar mas vai a dica:
Ao invés de criar um método que retorne uma lista de SelectItem, faça com que o método retorne a lista de objetos e na página JSP utilize as tags do Seam para que ele mesmo converta o valor selecionado em um objeto.

<h:selectOneMenu  
		id="planId"  
		style="width:219px"  
		required="true"  
		rendered="#{empty affiliation.code}"  
		onchange="findPlanById(this.value)"  
		value="#{plan.id}">  
	<f:selectItem itemValue="" itemLabel="Selecione..." />  
	<s:selectItems value="#{listAvailablePlans}" var="item" itemLabel="#{item.name}" />  
	<s<convertEntity />
</h:selectOneMenu>

[quote=rimolive]Ok amigo talvez não faça parte da discussão o que eu vou falar mas vai a dica:
Ao invés de criar um método que retorne uma lista de SelectItem, faça com que o método retorne a lista de objetos e na página JSP utilize as tags do Seam para que ele mesmo converta o valor selecionado em um objeto.

<h:selectOneMenu id="planId" style="width:219px" required="true" rendered="#{empty affiliation.code}" onchange="findPlanById(this.value)" value="#{plan.id}"> <f:selectItem itemValue="" itemLabel="Selecione..." /> <s:selectItems value="#{listAvailablePlans}" var="item" itemLabel="#{item.name}" /> <s<convertEntity /> </h:selectOneMenu> [/quote]

Tu fala então pra mim deixar esse “listAvailablePlans” como Factory no meu Seam Beam? Eu tinha feito isso mas depois comecei a achar estranho pois esse factory era chamado duas ou três vezes a cada requisição e eu não entendi o porquê disso. Dai implementei da forma como está atualmente.
Sabes o porquê desse comportamento?

Use a anotação @Create, pois ela executa o método ao criar o componente Seam.

[quote=rimolive]Ok amigo talvez não faça parte da discussão o que eu vou falar mas vai a dica:
Ao invés de criar um método que retorne uma lista de SelectItem, faça com que o método retorne a lista de objetos e na página JSP utilize as tags do Seam para que ele mesmo converta o valor selecionado em um objeto.

<h:selectOneMenu id="planId" style="width:219px" required="true" rendered="#{empty affiliation.code}" onchange="findPlanById(this.value)" value="#{plan.id}"> <f:selectItem itemValue="" itemLabel="Selecione..." /> <s:selectItems value="#{listAvailablePlans}" var="item" itemLabel="#{item.name}" /> <s<convertEntity /> </h:selectOneMenu> [/quote]

Estranho, mudei para o código abaixo e agora esta dando um erro.

<s:selectItems
                    value="#{slctAvailablePlans}"
                    var="p"
                    itemLabel="#{p.name}"
                    itemValue="#{p.id}"
                    noSelectionLabel="Selecione..."/>
            <s:convertEntity/>
@Name("planAction")
@Scope(ScopeType.EVENT)
public class PlanAction {

@Factory("slctAvailablePlans")
    public List<Plan> factorySlctAvailablePlans() {
        return planService.findAvailables();
    }

Erro:

org.jboss.seam.Entity$NotEntityException: Not an entity class: java.lang.Long
        at org.jboss.seam.Entity.forClass(Entity.java:159)
        at org.jboss.seam.Entity.forBean(Entity.java:145)
        at org.jboss.seam.persistence.PersistenceProvider.getId(PersistenceProvider.java:139)
        at org.jboss.seam.persistence.HibernatePersistenceProvider.getId(HibernatePersistenceProvider.java:191)
        at org.jboss.seam.framework.EntityIdentifier.<init>(EntityIdentifier.java:13)
        at org.jboss.seam.ui.JpaEntityLoader.createIdentifier(JpaEntityLoader.java:29)
        at org.jboss.seam.ui.AbstractEntityLoader.put(AbstractEntityLoader.java:46)
        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.seam.util.Reflections.invoke(Reflections.java:22)
        at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:32)
        at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56)
        at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:28)
        at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
        at org.jboss.seam.transaction.TransactionInterceptor$1.work(TransactionInterceptor.java:97)
        at org.jboss.seam.util.Work.workInTransaction(Work.java:47)
        at org.jboss.seam.transaction.TransactionInterceptor.aroundInvoke(TransactionInterceptor.java:91)
        at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
        at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44)
        at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
        at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)
        at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:185)
        at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:103)
        at org.jboss.seam.ui.JpaEntityLoader_$$_javassist_seam_9.put(JpaEntityLoader_$$_javassist_seam_9.java)
        at org.jboss.seam.ui.EntityConverter.getAsString(EntityConverter.java:65)
        at org.jboss.seam.ui.converter.PrioritizableConverter.getAsString(PrioritizableConverter.java:67)
        at org.jboss.seam.ui.converter.ConverterChain.getAsString(ConverterChain.java:126)
        at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getFormattedValue(HtmlBasicRenderer.java:448)
        at com.sun.faces.renderkit.html_basic.MenuRenderer.renderOption(MenuRenderer.java:480)
        at com.sun.faces.renderkit.html_basic.MenuRenderer.renderOptions(MenuRenderer.java:772)
        at com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:832)
        at com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:280)
        at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:861)
        at org.jboss.seam.ui.util.cdk.RendererBase.renderChild(RendererBase.java:190)
        at org.jboss.seam.ui.util.cdk.RendererBase.renderChildren(RendererBase.java:166)
        at org.jboss.seam.ui.renderkit.ValidateAllRendererBase.doEncodeChildren(ValidateAllRendererBase.java:33)
        at org.jboss.seam.ui.util.cdk.RendererBase.encodeChildren(RendererBase.java:92)
        at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:930)
        at javax.faces.render.Renderer.encodeChildren(Renderer.java:148)
        at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:930)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:933)
        at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:592)
        at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
        at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
        at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
        at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
        at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630)
        at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
        at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
        at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
        at org.jboss.seam.web.RewriteFilter.process(RewriteFilter.java:98)
        at org.jboss.seam.web.RewriteFilter.doFilter(RewriteFilter.java:57)
        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
        at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40)
        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
        at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)
        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:73)
        at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:73)
        at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
        at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
        at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
        at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)
        at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)
        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
        at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Thread.java:619)
@Entity
@Name("plan")
public class Plan extends EntityBase {
    @Column(name = "name", nullable = false, length = 30)
    @NotNull
    @NotEmpty
    @Length(max = 30)
    private String name;

    @Column(name = "description", nullable = false, length = 200)
    @NotNull
    @NotEmpty
    @Length(max = 200)
    private String description;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "register", nullable = false, length = 19)
    @NotNull
    private Date register;

    @Column(name = "days_to_use", nullable = false)
    @NotNull
    private int daysToUse;

    @Column(name = "operative", nullable = false, length = 1)
    @NotNull
    private Character operative;

    @Column(name = "TYPE", nullable = false, length = 2)
    @NotNull
    private String type;

    @Column(name = "PRICE")
    private BigDecimal price;

    @Column(name = "DAYS_FREE")
    private Long daysFree;

    @OneToMany(fetch = FetchType.LAZY, mappedBy = "plan")
    private List<AffiliationPlan> userPlans = new ArrayList<AffiliationPlan>(0);


    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDescription() {
        return this.description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Date getRegister() {
        return this.register;
    }

    public void setRegister(Date register) {
        this.register = register;
    }

    public int getDaysToUse() {
        return this.daysToUse;
    }

    public void setDaysToUse(int daysToUse) {
        this.daysToUse = daysToUse;
    }

    public Character getOperative() {
        return this.operative;
    }

    public void setOperative(Character operative) {
        this.operative = operative;
    }

    public List<AffiliationPlan> getUserPlans() {
        return this.userPlans;
    }

    public void setUserPlans(List<AffiliationPlan> userPlans) {
        this.userPlans = userPlans;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public BigDecimal getPrice() {
        return price;
    }

    public void setPrice(BigDecimal price) {
        this.price = price;
    }

    public Long getDaysFree() {
        return daysFree;
    }

    public void setDaysFree(Long daysFree) {
        this.daysFree = daysFree;
    }
}

Agora não sei mais o que pode ser, não achei nem no google algo conclusivo…

  1. Retire a anotação @Factory da classe PlanAction
 @Name("planAction")  
 @Scope(ScopeType.EVENT)  
 public class PlanAction {  
   
     public List<Plan> factorySlctAvailablePlans() {  
         return planService.findAvailables();  
     } 
  1. Altere o nome do método para ficar no padrão Javabean (getFactorySlctAvailablePlans)
 public List<Plan> getFactorySlctAvailablePlans() {  
         return planService.findAvailables();  
     }

E depois tente rodar.

[quote=rimolive]1. Retire a anotação @Factory da classe PlanAction

 @Name("planAction")  
 @Scope(ScopeType.EVENT)  
 public class PlanAction {  
   
     public List<Plan> factorySlctAvailablePlans() {  
         return planService.findAvailables();  
     } 
  1. Altere o nome do método para ficar no padrão Javabean (getFactorySlctAvailablePlans)
 public List<Plan> getFactorySlctAvailablePlans() {  
         return planService.findAvailables();  
     }

E depois tente rodar.[/quote]

Mesmo erro! Nota que não estou usando EJBs. Na verdade da um erro de NullPointerException usando dessa forma:

java.lang.NullPointerException
	at org.jboss.seam.persistence.HibernatePersistenceProvider.getSession(HibernatePersistenceProvider.java:369)
	at org.jboss.seam.persistence.HibernatePersistenceProvider.getId(HibernatePersistenceProvider.java:177)
	at org.jboss.seam.framework.EntityIdentifier.<init>(EntityIdentifier.java:13)
	at org.jboss.seam.ui.JpaEntityLoader.createIdentifier(JpaEntityLoader.java:29)
	at org.jboss.seam.ui.AbstractEntityLoader.put(AbstractEntityLoader.java:46)
	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.seam.util.Reflections.invoke(Reflections.java:22)
	at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:32)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56)
	at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:28)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
	at org.jboss.seam.transaction.TransactionInterceptor$1.work(TransactionInterceptor.java:97)
	at org.jboss.seam.util.Work.workInTransaction(Work.java:47)
	at org.jboss.seam.transaction.TransactionInterceptor.aroundInvoke(TransactionInterceptor.java:91)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
	at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
	at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)
	at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:185)
	at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:103)
	at org.jboss.seam.ui.JpaEntityLoader_$$_javassist_seam_12.put(JpaEntityLoader_$$_javassist_seam_12.java)
	at org.jboss.seam.ui.EntityConverter.getAsString(EntityConverter.java:65)
	at org.jboss.seam.ui.converter.PrioritizableConverter.getAsString(PrioritizableConverter.java:67)
	at org.jboss.seam.ui.converter.ConverterChain.getAsString(ConverterChain.java:126)
	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getFormattedValue(HtmlBasicRenderer.java:448)
	at com.sun.faces.renderkit.html_basic.MenuRenderer.renderOption(MenuRenderer.java:480)
	at com.sun.faces.renderkit.html_basic.MenuRenderer.renderOptions(MenuRenderer.java:772)
	at com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:832)
	at com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:280)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:861)
	at org.jboss.seam.ui.util.cdk.RendererBase.renderChild(RendererBase.java:190)
	at org.jboss.seam.ui.util.cdk.RendererBase.renderChildren(RendererBase.java:166)
	at org.jboss.seam.ui.renderkit.ValidateAllRendererBase.doEncodeChildren(ValidateAllRendererBase.java:33)
	at org.jboss.seam.ui.util.cdk.RendererBase.encodeChildren(RendererBase.java:92)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:277)
	at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:279)
	at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
	at org.ajax4jsf.renderkit.html.AjaxOutputPanelRenderer.encodeChildren(AjaxOutputPanelRenderer.java:78)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:930)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:933)
	at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:592)
	at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
	at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
	at org.jboss.seam.web.RewriteFilter.doFilter(RewriteFilter.java:63)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.jboss.seam.web.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:42)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)
	at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Thread.java:619)

Conforme diz aqui [http://docs.jboss.org/seam/latest/reference/en-US/html/controls.html#d0e28276], acrescentei essa linha no meu components.xml:

<ui:jpa-entity-loader entity-manager="#{em}"/>

Dai muda o erro para aquele “# org.jboss.seam.Entity$NotEntityException: Not an entity class: java.lang.Long”.

Já não sei mais nada… Imagino que seja por algum problema de transação já que estou usando:

<persistence:entity-manager-factory
            name="facJpa"
            persistence-unit-name="facJpa"/>

    <persistence:managed-persistence-context
                                             name="em"
                                             auto-create="true"
                                             entity-manager-factory="#{facJpa}"/>

    <transaction:entity-transaction entity-manager="#{em}"/>

Cara…

você já deve ter resolvido este problema, mas em todo caso, nunca use rendered diretamente no componente.
Acredito que dê problema na montagem da árvore de componentes.
Tente colocar um h:panelGroup ou um s:fragment em volta do componente, e use o rendered nele.

Abraço