Frage

Ich verwende eine Richfaces Auswahllisten und ich möchte den rechten Seitenteil mit einer Liste von SelectItems von meinem Backing Bean aufzufüllen.

Bestücken die linke Seite kein Problem von dem Träger Bohne ist jedoch die rechte Seite ist problematisch.

Das ist, was ich zur Zeit habe

<h:outputText value="Roles" />
<rich:pickList showButtonsLabel="false">
    <f:selectItems value="#{Bean.allRoles}" />
</rich:pickList>

EDIT:

Also ich habe Rollen 'a', 'b', 'c' und 'd'.

die Benutzerrollen ‚a‘ hat und ‚d‘, so ‚a‘ und ‚d‘ auf der rechten Seitenwand sein sollte, und ‚b‘ und ‚c‘ an der linken Seitenwand sein soll.

EDIT:

Eine weitere Erläuterung.

Ich habe drei Listen für den Benutzer.

  1. Alle posible Rollen (a bis d)
  2. Alle Rollen der Benutzer Teil (a und d)
  3. ist
  4. Alle Rollen der Benutzer ist nicht Teil von (b und c)

Alle Listen haben den Datentyp ArrayList<SelectItem>.

Ich brauche die Fähigkeit, einzelne Rollen zwischen Listennummer 1 und Listennummer 2 und dann den neuen Satz von Rollen speichern zu bewegen. Ich dachte, der Pickliste wäre die besten Richfaces für den Job-Objekt.

War es hilfreich?

Lösung

Sie möchten diesen Code:

<h:outputText value="Roles" />
<rich:pickList showButtonsLabel="false" value="#{bean.chosenRoles}">
    <f:selectItems value="#{Bean.allRoles}" />
</rich:pickList>

und in Ihrem Bean Sie wollen:

private String[] chosenRoles;

+ getter/setter 

Whenver Sie wollen Standardrollen machen fügen Sie einfach die Rollen in das chosenRoles Array (zum Beispiel in dem Bean-Konstruktor). Auf diese Weise chosenRoles immer die Elemente auf der rechten Seite der Auswahlliste enthält, während Elemente auf der linken Seite sind nicht in der Anordnung.

Hope, das hilft!

Andere Tipps

Es scheint, dass ich die Lösung gefunden.

<rich:pickList value="#{aBean.rightSideValues}"> 
        <f:selectItems value="#{aBean.leftSideValues}"/>
</rich:pickList>
  • "#{aBean.rightSideValues}" auf die Liste oder Array zeigen sollte Objekte. Mit diesen Werten rechten Seite die Auswahlliste wird aufgefüllt werden.

  • #{aBean.leftSideValues} in der Liste der SelectItem anweisen Objekt.

ONE HINWEIS - SelectItem Objekt MUß mit Objekten aus dem "#{aBean.rightSideValues}" konstruiert .

Beispiel .

class ABean{
   ...
   List<SomeObject> getRightSideValues(){
    ...
  }

   List<SelectItem> getLeftSideValues(){
      List<SomeObjects> someObjects = getAllAvailableObjects();
      List<SelectItem> sItems = new ArrayList<SelectItem>(); 
      for(SomeObject sObj : someObjects){
          SelectItem sItem = new SelectItem(sObj, sObj.toString());
          sItems.add(sItem);
      }
      return sItems;
}

Beachten Sie, dass SelectItem nimmt erstes Argument und dieses Argument ist der Verweis auf die Someobject. In den Einbauten werden reich Gesichter Objekte aus dem vergleichen "#{aBean.rightSideValues}" mit Objekten aus dem #{aBean.leftSideValues} mit Hilfe der Methode

SomeObject.equals()

Wenn Sie andere Werte als Text benötigen, müssen Sie einen Konverter machen.

Siehe http://programmingnutsandbolts.blogspot.com/2009/ 08 / Richfaces-Auswahllisten-converters.html

Wie in RF 4.3.3 und früher wahrscheinlich auch, müssen Sie auch die Hash-Methode Ihrer Modellklasse (Entity-Bean) außer Kraft zu setzen. Also, nur für Ihren Konverter die Methode equals überschrieben ist nicht genug. Die folgenden erarbeitet für mich und meine PubThread EntityBean.

    @Override
    public boolean equals(Object obj) {
        if (obj == null)
            return false;
        if (!(obj instanceof PubThread))
            return false;
        PubThread objectToCheck = (PubThread) obj;
        boolean isShallowCopy = (this.id.equals(objectToCheck.id));
        return isShallowCopy;
    }

    @Override
    public int hashCode() {
        return (this.id.hashCode());
    }

Setzen Sie den Wert der Auswahlliste auf ein Array von dem Wert des SelectItem.

Was auch immer Sie mit auf der rechten Seite beginnen wird dann im Grunde nur der Standardwert der Auswahlliste:

    <rich:pickList value="#{aBean.rightSideValues}"> 
        <f:selectItems value="#{aBean.leftSideValues}"/>
    </rich:pickList>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top