c:pour des propriétés du bean
Je suis à la recherche d'un morceau de code pour la définition d'une propriété dans un managed bean JSF. Ma première idée était quelque chose comme ça:
<c:set var="#{loginBean.device}" value="mobil"></c:set>
Cela signifie que je veux mettre l'attribut device
à la valeur "mobil"
sans un bouton ont été cliqué.
OriginalL'auteur DominikAngerer | 2012-08-07
Vous devez vous connecter pour publier un commentaire.
Oui, vous pouvez utiliser c:à cette fin.
Doc: http://docs.oracle.com/cd/E17802_01/j2ee/javaee/javaserverfaces/2.0/docs/pdldocs/facelets/c/set.html
Toutefois, la définition d'une valeur statique est rarement intéressant. Vous pourriez envisager de définir une valeur par défaut directement dans votre managed bean classe. Aussi en termes de maintenabilité puisque vous pouvez gérer les constantes de mieux dans le code Java que dans la couche vue.
Tout comme une note de côté: JSF 2.2 arrive avec une solution sympa: Afficher les Actions (voir la section jdevelopment.nl/jsf-22/#758). Je préfère ne pas utiliser de jstl si possible. L'approche proposée peut conduire à laide des effets secondaires lorsqu'une valeur de l'expression est utilisée à la place d'une valeur statique, en raison du fait que JSTL est évalué à un autre point dans le temps.
OriginalL'auteur Ingo
Je pense que vous voulez dans le cadre du programme de la balise balise enfant setPropertyActionListener. Vous pouvez définir cela comme une balise enfant en toute ActionComponent.
Mise à JOUR:
L'origine, j'avais mal compris les utilisateurs problème. Ils ont une page, et qu'ils veulent une propriété à définir lors du chargement de la page. Il ya un couple de façons de le faire, mais les deux sont un peu différentes. Si vous souhaitez définir une propriété à une valeur après chaque publication, alors vous pouvez utiliser le @PostConstruct annotation sur un ManagedBean méthode.
Maintenant, si j'ai un ViewScoped ou SessionScope bean qui doit être initialisée avec une valeur par défaut, juste une fois, quand la page se charge, alors vous pouvez définir une phase du cycle de vie de l'événement qui sera exécuté après chaque publication, et de vérifier si la page doit être initialisé ou non.
mah.xhtml:
LoginBean:
Donc vous voulez dire que vous ne voulez que l'appareil propriété doit être définie avec cette valeur lors du chargement de la page?
c'est tout oui - mais je n'ai vraiment aucune idée de comment faire pour que la - sry je suis vraiment nouveau à JSF..
Notez que vous pouvez ajouter setPropertyActionListeners seulement à l'action des composants, pas n'importe où (comme mentionné dans la réponse).
Merci à vous... vous avez raison, il doit être un composant UIComponent qui peuvent avoir un ActionListener.
OriginalL'auteur maple_shaft
Je ne suis pas en mesure de Commenter: Si vous avez besoin de la valeur pour être prêt à la page de chargement, vous pouvez utiliser Bean Géré directement initialiser la valeur ou de l'utilisation de son constructeur ou @PostConstruct à faire de même.
OriginalL'auteur Johny T Koshy
Au lieu de définir la valeur dans le fichier xhtml vous pouvez définir via un autre ManagedBean. Par exemple, si vous avez managedBean1 qui gère page1.xhtml et managedBean2 qui gère page2.xhtml. Si page1.xhtml comprend page2.xhtml comme:
dans managedBean1 vous pouvez avoir en haut
et dans le PostConstruct
travaillé pour moi en tout cas...
OriginalL'auteur MitchBroadhead