2010-12-15 89 views
0

Je suis actuellement coincé avec un problème qui serait résolu facilement en utilisant JSP. De toute façon, j'ai une page générée avec un identifiant. JSF doit maintenant lire cette valeur lors de l'exécution (par exemple, le chargement de la page), et faire une requête sur un DB avec cet ID et afficher les résultats. Avec JSP, ce serait une évidence, mais avec JSF je ne sais pas comment manipuler les données du backing bean de l'extérieur. Des idées?Lire la valeur rendue dans la page avec JSF

Thx à l'avance, Chris

+1

Quel est cet ID pour? Comment cela est-il fourni? Codé en dur? Demande de paramètre? – BalusC

+0

Cet ID est utilisé pour obtenir des entrées dans un DB qui sont connectées à l'ID. L'identifiant est codé en dur. – methical

+0

Pouvez-vous montrer comment vous l'avez fait dans JSP? nous pouvons essayer dans JSF – mvg

Répondre

1

Il est vraiment au-delà de moi que cet ID est codé en dur dans le côté de la vue, je préfère avoir fait partie de la requête HTTP quelque part (URI, paramètre, etc) ou juste le faire dans le modèle, mais ala.

Vous pouvez utiliser JSTLc:set pour définir une propriété de haricot de la vue et vous pouvez utiliser la méthode setter ou f:view beforePhase d'exécuter des choses sur la réponse rendu.

<c:set scope="request" target="#{bean}" property="id" value="123" /> 
<f:view beforePhase="#{bean.onload}"> 
    ... 
</f:view> 

avec

public class Bean { 
    private String id; // +getter+setter 

    public void onload(PhaseEvent event) { 
     // Value of id is available here. 
     System.out.println(id); // 123 
    } 

    // ... 
} 
+0

merci pour l'indice, je pense que cela va le faire. La raison derrière tout cela est que le CMS génère des pages statiques. L'auteur peut sélectionner une base de données dans le CMS, l'ID est rendu dans la page et en raison de certaines décisions technologiques stupides je vais devoir rester avec JSF en essayant de bricoler comment faire correctement. Je n'aurais pas utilisé JSF ici, mais je suis juste un homme de main. – methical

0

hm, dois-je comprendre que vous voulez lire un argument GET à partir du code java?

par exemple. l'url est http://www.example.com/?foo=bar

alors vous pouvez lire la valeur dans votre code java avec cet extrait

FacesContext context = FacesContext.getCurrentInstance(); 
String theValue = context.getExternalContext().getRequestParameterMap().get("foo"); 
+0

pas son paramètre d'obtenir son rendu dans la page avant – methical