2 votes

comment obtenir les valeurs sélectionnées d'une rich:orderingList ?

J'utilise Richfaces 4 et j'essaie d'obtenir les éléments sélectionnés dans une rich:orderingList. Je veux que ces éléments puissent être retirés de la liste en appuyant sur un bouton "Remove". J'ai donc ceci :

<rich:orderingList id="categoriesList" listHeight="100px"
    listWidth="300px" value="#{selectionBean.availableCategories}"
    selection="${selectionBean.selectedCategories}"
    valueChangeListener="#{selectionBean.takeSelection}" >
    <a4j:ajax event="click" render="categoriesList" execute="@this" />
</rich:orderingList>

Et la fonction dans le haricot de soutien @ViewScoped, que j'ai adaptée d'ici https://community.jboss.org/message/561295 :

private List<String> availableCategories;

private List<String> selectedCategories;

...............................

public void takeSelection(AjaxBehaviorEvent event) {
    System.out.println("ABE In takeSelection...");

    System.out.println(" Trying to find component with offering elements...");
    UIComponent component = event.getComponent();
    System.out.println(" Found: " + (component == null ? "<null>" : (component.getClass().getName() + " - " + component.getId())));
    if(component != null) {
        System.out.println( " Component that fired the event: " + component.getClass().getSimpleName() + " - " + component.getId());
        UIOrderingList orderingList = (UIOrderingList) component;

        System.out.println(" selectedCategories are "+ selectedCategories);
    }
    System.out.println(type + " Leaving takeSelection");
}

Le problème est que lorsque je clique sur la liste pour sélectionner un élément, bien que je voie qu'une demande Ajax est envoyée, la liste selectedCategories n'est pas mise à jour, et la méthode takeSelection n'est pas appelée non plus.

0voto

Paul Dijou Points 76

Quelques questions afin de mieux comprendre votre problème.

Quel est le but de :

<a4j:ajax event="click" render="categoriesList" execute="@this" />

Pourquoi rendre la liste de commande à chaque puisqu'il est censé être modifié uniquement en cliquant sur le bouton "supprimer" ?

Pourquoi ?

selection="${selectionBean.selectedCategories}"

commence par un symbole "$" au lieu d'un "#" ? (ne devrait pas être bloquant).

Enfin, je ne trouve pas d'attribut "sélection" sur le composant. Voir VDL . Êtes-vous sûr de la syntaxe ?

Salutations

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X