Primefaces 2 + ConversationScoped

Alguém do fórum já trabalhou com o PF + Conversação?

Estou tendo problemas ao utilizar esse escopo porque os recursos do PF são carregados apenas no primeiro request (antes de iniciar a conversacao), depois disso não são mais carregados dando erros do tipo “PrimeFaces.widget.InputText is not a constructor”, “PrimeFaces.widget.AccordionPanel is not a constructor”, etc… Esses erros são causados porque as bibliotecas javascript do PF não são mais colocadas no HEAD do html na próximas navegações.

Exemplos:
HTML

<f:metadata>
        <f:event type="javax.faces.event.PreRenderViewEvent"
                 listener="#{enterpriseMB.initConversation}" />
</f:metadata>
@ConversationScoped
@Named
public class EnterpriseMB extends AbstractPaginatedCRUDMB<Enterprise, EnterpriseService> implements Serializable {
    @Inject
    private Conversation conversation;
   
    public void initConversation() {
        if (conversation.isTransient()) {
            conversation.begin();
        }
    }
}

Usando o ViewScoped os componentes se comportam perfeitamente…

cara por que você esta usando

<f:metadata>  
        <f:event type="javax.faces.event.PreRenderViewEvent"  
                 listener="#{enterpriseMB.initConversation}" />  
</f:metadata>

isso é uso de metadada?
eu tenho que aprender sobre metadada
poderia falar mais

[quote=jaissonduarte]cara por que você esta usando

<f:metadata>  
        <f:event type="javax.faces.event.PreRenderViewEvent"  
                 listener="#{enterpriseMB.initConversation}" />  
</f:metadata>

isso é uso de metadada?
eu tenho que aprender sobre metadada
poderia falar mais[/quote]

Porque quero que minha conversação seja iniciada logo no primeiro load da tela. Eu pensei em usar no @PostConstruct, porém não é indicado. O metadata foi incluído do JSF2, com ele é possível pegar parametros do get e setar no MB, executar eventos (neste caso acima), etc…

O que você tem dúvida sobre ele?

li muito sobre metadada e não entendi muito
poderia me contar em simples explicação

é que foi assim
estava apresentando minha biblioteca digital num evento técnico
e um dos avaliadores sugeriu o uso de metadadas no resultado das buscas
o que é conversação?
:smiley:

Aqui tem um bom exemplo de utilização do metadata.

Sobre conversação, é um escopo que permite um tempo de vida controlado para os ManagedBeans. No JSF 2 há os escopos @ApplicationScoped, @SessionScoped, @RequestScoped, @ViewScoped, @CustomScoped ou @NoneScoped.

Application = tempo de vida do start ao shutdown da aplicação;
Session = tempo de vida de sessão do usuário;
Request = Dura somente durante o request;
View = Dura até que seja chamada uma outra view;
CustomScoped = Um escopo com tempo de vida descrito pelo desenvolvedor;
None = não permite acesso direto por páginas, apenas por outros componentes;

O ConversationScoped é um escopo disponível apenas no CDI;

esqueci de agradecer pelas informações
muito obrigado
espero que alguém posso te ajudar :smiley: