J'ai un tag mediaOutput qui, dans son attribut createContent, nécessite que le bean backing soit dans un certain état. Une liste de valeurs, qui est remplie dans une méthode init, doit être disponible. J'ai donc ajouté une balise keepAlive pour l'ensemble de la fève de support. Je vois maintenant le backingBean à la place de quelques beans proxy (richfaces), mais la liste remplie est à nouveau nulle.richfaces keepAlive ne fonctionne pas
Comment rendre cela possible?
J'ai vérifié que la méthode init a été appelée et que la liste est renseignée dans la méthode init.
<a4j:keepAlive beanName="myBean" />
<a4j:mediaOutput createContent="#{myBean.writeChart}" ... />
Le backing bean
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
}
C'est, bien que cela fonctionne, exactement ce que j'ai essayé d'empêcher ... Le bean backing contient d'autres choses pour la même page, en mettant tout sur la portée de la session ne serait pas recommandé . Création d'un haricot séparé pour ce neihter. C'est pourquoi keepAlive a été introduit .. –
oui, mais peut-être que mediaOutput ne passe pas par les mécanismes de requête ajax habituels, c'est votre seul moyen. Peut-être aimeriez-vous utiliser un champ de conversation (orchestre, couture). voir ma mise à jour pour l'autre bean – Bozho
Peut-être yeah :) Mais ils auraient pu documenter cela + la balise mediaOutput fait partie de la spécification a4j, bizarre qu'elle ne supporte pas les autres fonctionnalités de a4j :( –