Obtenir des valeurs de paramètre de requête en JSF
J'ai un <odc:tabbedPanel/>
composant. À l'intérieur de cela, j'ai une page dans le <odc:bfPanel/>
composant. Je veux accéder à une valeur (d'un inputtext ou radiobutton) à partir de la page dans le <odc:bfPanel/>
dans mon <odc:tabbedPanel/>
managed bean classe. Merci de me guider comment dois-je faire à ce sujet. Notez ici que je ne veux pas utiliser la session ici. Je veux qu'il en demande seulement. J'ai essayé les options ci-dessous, mais ils n'ont pas de travail pour moi.
option un
String value = (String) ctx.getExternalContext()
.getRequestParameterValuesMap()
.get("managedbean.property");
option deux
String value = (String) ctx.getExternalContext()
.getRequestParameterValuesMap()
.get("property");
option trois
HttpServletRequest req = (HttpServletRequest) FacesContext.getCurrentInstance()
.getExternalContext().getRequest();
System.out.println(req.getParameter("property"));
option quatre
Map requestMap = FacesContext.getCurrentInstance()
.getExternalContext().getRequestHeaderValuesMap();
String msgId = (String) requestMap.get("property");
System.out.println(msgId);
option de cinq
HttpServletRequestWrapper r = new HttpServletRequestWrapper(req);
String value1 = r.getParameter("managedbean.property");
je veux que la valeur de pas dans la page jsp du managed bean ... mais je le veux dans un autre managed bean. ici, j'ai des pages à l'intérieur d'une page(comme je l'avais mentionné un panneau à onglets). maintenant, je veux la valeur de la bean géré de l'extérieur de l'onglet
OriginalL'auteur user265950 | 2010-07-28
Vous devez vous connecter pour publier un commentaire.
Laissez d'abord expliquer pourquoi les options que vous avez essayé n'a pas fonctionné:
Option 1 et 2 ne sont pas valides parce qu'il renvoie des valeurs(!!) comme un
String[]
, pas une seule valeur commeString
.Option 3 devrait fonctionner si le paramètre était là. Mais ce n'est pas une belle JSF-ish.
L'Option 4 est non valide, car les paramètres ne sont pas définis dans l'en-tête de requête.
L'Option 5 est invalide parce qu'il n'a simplement aucun sens. Vous êtes seul, en ajoutant une couche abstraite entre qui en fait ne change rien ici.
La JSF-ish serait l'utilisation de
ExternalContext#getRequestParameterMap()
:Pourquoi l'option 3 ne fonctionne pas est probablement parce que le nom du paramètre n'est pas ce que vous en pensez/attendre c'est. JSF à savoir ajoute (woodstocks) de l'IDENTIFIANT client est basé sur parent
UINamingContainer
composants dans l'arbre d'affichage. Faites clic droit sur le code HTML généré en sortie de la JSF page dans votre navigateur et choisissez l'Affichage de la Source. Examinez le nom de l'généré<input>
élément d'intérêt. Utilisation que nom comme nom de paramètre.Cela dit, c'est après tout une solution de contournement n'est pas une solution. Mais on ne peut pas raisonnablement supposer la réel une solution, car l'exigence fonctionnelle et le code que vous avez ne sont pas entièrement claires. Normalement, vous lier les éléments d'entrée d'un backing bean. Si vous êtes à l'intérieur différent de backing bean, ensuite, vous pouvez aussi accéder à que backing bean à partir de l'intérieur de la sauvegarde de haricots, puis à son tour l'accès à la valeur d'entrée lié avec elle. Voir L'injection de Haricots contrôlés les uns dans les autres pour un comment.
OriginalL'auteur BalusC
Le fait que vos commandes sont à l'intérieur d'IBM ODC panneaux n'est pas pertinent.
Généralement vous devez lier le contrôle d'entrée pour un managed bean valeur.
Bean définition:
Vue tags:
Bean:
Si vous voulais lier votre entrée de contrôle à un autre de la fève à la une avec la logique de l'application, vous pouvez utiliser la propriété d'injection se référer aux autres bean.
Vous pouvez regarder des trucs directement par le contexte, ou l'utilisation de l'expression des classes pour résoudre des trucs via le code, mais c'est plus propre approche.
utiliser un
managed-property
à injecter de la propriété d'un bean dans l'autre - voir la dernière section.OriginalL'auteur McDowell
Je ne comprends pas exactement votre question. Si le
inputtext
ouradiobutton
est correctement lié à une valeur dans un backing bean, vous pouvez accéder à la valeur directement en Java. Si ce qui vous intéresse est la programmation de recherche d'un managed bean, alors c'est comment je le fais:OriginalL'auteur ewernli