Affichage conditionnel des composants JSF

tout d'abord, je suis nouveau sur Java EE, je suis issu d'une solide expérience de développement ASP .NET. J'ai parcouru le net, et je pourrais manquer cela, mais il semble qu'il n'y ait pas de tutoriels simples et directs sur la façon dont je pourrais relier la classe de haricots de soutien aux composants D'un JSF.

un bon exemple est comme ceci, actuellement j'essaye de créer une page JSF où il y a un ensemble de liens comme barre de menu et un ensemble de formes. Ce que j'ai l'intention de faire est, en cliquant sur un lien, forme particulière sera rendue.

ASP.NET, j'ai facilement pu récupérer l'élément, puis définissez l'attribut d'être affichables. Je me demande s'il n'y a pas un moyen facile (diable, même de quelque manière que ce soit) de le faire dans le JSF.

les formulaires sont déjà dans la page, il s'agit simplement de définir l'attribut" render " à true lorsque je clique sur un lien particulier.

69
demandé sur BalusC 2011-02-02 06:17:58
la source

2 ответов

oui, utilisez l'attribut rendered .

<h:form rendered="#{some boolean condition}">

vous le liez habituellement au modèle plutôt que de laisser le modèle saisir le composant et le manipuler.

E. G.

<h:form rendered="#{bean.booleanValue}" />
<h:form rendered="#{bean.intValue gt 10}" />
<h:form rendered="#{bean.objectValue eq null}" />
<h:form rendered="#{bean.stringValue ne 'someValue'}" />
<h:form rendered="#{not empty bean.collectionValue}" />
<h:form rendered="#{not bean.booleanValue and bean.intValue ne 0}" />
<h:form rendered="#{bean.enumValue eq 'ONE' or bean.enumValue eq 'TWO'}" />

Note l'importance de la mot-clé EL opérateurs comme gt , ge , le et lt au lieu de > , >= , <= et < comme les crochets d'angle < et > sont des caractères réservés en XML. Voir aussi ce q&r connexe: analyse D'erreur XHTML: le contenu des éléments doit se composer de données de caractères bien formées ou de balisage .

en ce qui concerne votre cas d'utilisation spécifique, supposons que le lien passe un paramètre comme ci-dessous:

<a href="page.xhtml?form=1">link</a>

vous pouvez alors montrer le formulaire comme ci-dessous:

<h:form rendered="#{param.form eq '1'}">

(le #{param} est un objet EL implicite faisant référence à un Map représentant les paramètres de la requête)

voir aussi:

135
répondu BalusC 2017-05-23 14:47:21
la source

en plus de l'article précédent, vous pouvez avoir

<h:form rendered="#{!bean.boolvalue}" />
<h:form rendered="#{bean.textvalue == 'value'}" />

Jsf 2.0

10
répondu tosha Shah 2012-10-12 01:24:02
la source

Autres questions sur jsf components conditional-rendering