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?
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