richfaces mantêm -se não funcionando
Pergunta
Eu tenho uma tag MediaOutput que, em seu atributo CreateContent, exige que o feijão de apoio esteja em um determinado estado. Uma lista de valores, que é preenchida em um método init, deve estar disponível.
Portanto, adicionei uma etiqueta Keepalive para todo o feijão de apoio. Agora, de fato, vejo o backingbean em vez de alguns (Richfaces) proxy Bean, mas a lista preenchida é nula novamente.
Como tornar isso possível?
Eu verifiquei se o método init foi chamado e se a lista está preenchida no método init.
<a4j:keepAlive beanName="myBean" />
<a4j:mediaOutput createContent="#{myBean.writeChart}" ... />
O feijão de apoio
public class MyBean implements Serializable {
public List list;
public void init(ActionEvent event) {
// call some resource to fill the list
list = service.getItems();
}
public void writeChart(final OutputStream out, final Object data) throws IOException {
// list is null
}
// getters & setters
}
Solução
Declarar seu feijão para estar em session
alcance.
Se você tiver outras informações somente para solicitação no feijão, basta criar um novo feijão escondido e mover todas as outras coisas lá. É perfeitamente legível.
Outras dicas
Isso não é um problema. Você não precisa manter o Mediabean vivo e não pode. O feijão que é fornecido no parâmetro CreateContent será criado pelo componente MediaOutput. O prefixo "Bean" é o perturbador - esta é apenas uma classe Java simples que contém o método de tinta (...). Você precisa obter o feijão Keepalivado (por exemplo, um feijão de apoio) neste simples "feijão" como um gerente e também pode conter as informações de manutenção.
Exemplo:
abc.xhtml e abc.java com @ManagedBean (name = "abcbean") e @RequestScoped Anotation. Você usa o abcbean como um feijão de apoio com o abc.xhtml, mas não no parâmetro MediaOutput.CreateContent! Mas você pode criar mediabean.java com a anotação @ManagedBean (name = "mediabean") e possui uma @ManagedProperty que recebe a instância do abcbean no MediaBean. E a instância do abcbean é mantida ...