2010-07-27 3 views
0
public class MyBackingBean{ 

private List model; 

public String search(){ 
    //change model data 
    model = doSearch(); 
    return "same_view" 
} 

@PostConstruct 
public void init(){ 
    model = loadDefault() 
} 

//Other code omitted for clarity 
} 

Et en JSP, pour quelques raisons que j'utilise c: foreach itérer sur le modèle et afficher les éléments dans un tableau HTML. La page jsp a un bouton searh dont l'action est mappée sur # {mybackingbean.search}. Donc quand je clique sur recherche, je m'attends seulement à ce qu'un sous-ensemble soit affiché (basé sur les paramètres de recherche) sur la même page. Le problème que j'ai est que, "Quand je clique sur le bouton de recherche, la méthode de recherche est invoquée et elle renvoie un nom de vue. Comme le bean est demandé, une nouvelle instance du bean est créée après cela et finalement la méthode init écrase les résultats. En d'autres termes, j'obtiens la même vue initiale qui affiche tous les éléments au lieu d'afficher uniquement les éléments correspondants ".problème avec la forme de JSF soumettre

Quel est le problème avec cela? Et s'il vous plaît, guidez-moi sur l'approche idéale pour résoudre cela.

Répondre

1
  • ne pas utiliser redirect, utilisez l'avant (dans votre cas de navigation)
  • si vous utilisez JSF 2.0, utilisez @ViewScope
  • check MyFaces Orchestra
  • essayer <a4j:keepAlive> de richfaces
+0

Comment Je modifie mon cas de navigation pour l'utiliser au lieu de rediriger. Pouvez-vous donner un exemple? – user378101

+0

@user Juste un conseil - pensez à utiliser JBoss Seam en combinaison avec JSF et en basculant la vue sur les facelets au lieu de JSP. C'est une bien meilleure combinaison. Vous pouvez l'essayer dans vos futurs projets. –

+0

Utilisé par défaut. – Bozho