SelectOneMenu mises à jour d'autres SelectOneMenu
Je veux mettre à jour la deuxième SelectOneMenu lorsque je sélectionne un élément de la première SelectOnMenu. Comme il est maintenant, je reçois les valeurs de la SelectOneMenus à partir d'un ManagedBean. Je suppose que je dois utiliser AJAX (jquery) pour envoyer des paramètres à la ManagedBean.
<h:form>
<div class="center">
<h:panelGrid id="editTable" columns="2" styleClass="center">
...
<h:outputText value="#{msg.timetable_list_category}" />
<h:selectOneMenu class="category">
<f:selectItems value="#{categoryBackingBean.categorys}" var="c"
itemLabel="#{c.category_Name}" itemValue="#{c.id}" />
</h:selectOneMenu>
<h:outputText value="#{msg.timetable_list_seminarblock}" />
<h:selectOneMenu class="seminarblock">
<f:selectItems value="#{seminarblockBackingBean.seminarblocks}" var="s"
itemLabel="#{s.seminarblock_Name}" itemValue="#{s.seminarblock_Id}" />
</h:selectOneMenu>
...
</h:panelGrid>
...
</div>
</h:form>
OriginalL'auteur thomas.st | 2012-09-21
Vous devez vous connecter pour publier un commentaire.
En fait, vous pouvez utiliser un ValueChangeListener qui est appelée lorsque la valeur de votre selectOneMenu changements:
Puis, dans votre bean vous avez cette méthode:
De mise à jour de la page, vous pouvez ajouter
onchange="submit()"
à votre<h:selectOneMenu/>
. Pour certains, le rendu partiel, vous pouvez essayer d'ajouter cette<f:ajax/>
au lieu deonchange="submit()"
:Si je ne me trompe pas, vous aurez envie d'obtenir l'id de l'élément sélectionné dans le premier menu et de remplir la seconde d'après. Ensuite, vous pouvez rendre les autres selectOneMenu ou, si nécessaire, un panneau d'habillage d'une partie de votre formulaire.
Pouvez-vous, s'il vous plaît, à l'élaboration de vos contexte un peu plus loin? Ce que vous essayez d'atteindre et/ou des restrictions avez-vous?
Avec votre solution, il fonctionne très bien maintenant, mais il y a un petit bug. Lorsque vous ouvrez ce site pour la première fois, il n'y a pas de valeurs dans le 2ème SelectOneMenu, parce que le valueChangedEvent obtient seulement appelé, si vous modifiez l'élément sélectionné la première fois.
Êtes-vous de l'initialisation à la fois de votre soutien listes? Si vous ne faites pas ainsi, la deuxième liste ne sont pas des éléments, en attendant le premier à définir ceux qui doivent y aller. Vous devez définir une valeur par défaut pour le premier menu et de remplir la seconde, lors du chargement de la page.
Le problème, c'est qu'il y est une base de données en arrière-plan. Si j'ai mis l'ID d'une valeur par défaut et que quelqu'un modifie la base de données, le programme ne fonctionne plus et il n'y a pas d'éléments dans le 2ème SelectOneMenu de nouveau. Les catégories (1er SelectOneMenu) sont montrés parfaitement, mais j'ai >modifier< la valeur de la 1ère SelectOneMenu pour obtenir des valeurs pour le 2ème. Info: 1 Catégorie a plus Seminarblocks
OriginalL'auteur Fritz
Primefaces a une grande caractéristique de ce que vous essayez d'atteindre. Déjà à l'aide d'Ajax, donc ne pas avoir à vous soucier de l'écriture de code de votre auto.
OriginalL'auteur Paulius Matulionis