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
}
Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top