8

Richfacesの選択リストを使用しており、右側のパネルにバッキングBeanのSelectItemのリストを入力したいと思います

左側への入力はバッキングBeanからの問題ではありませんが、右側には問題があります。

これは私が現在持っているものです

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

編集:

したがって、私には「a」、「b」、「c」、および「d」の役割があります。

ユーザーには「a」と「d」の役割があるため、「a」と「d」は右側のパネルに、「b」と「c」は左側のパネルに配置する必要があります。

編集:

さらなる説明。

ユーザー用のリストが3つあります。

  1. 可能なすべての役割(からd)
  2. ユーザーが属するすべての役割(aおよびd)
  3. ユーザーが(bおよびc)の一部ではないすべての役割

すべてのリストのデータ型はArrayList<SelectItem>です。

リスト番号1とリスト番号2の間で個々の役割を移動し、新しい役割のセットを保存する機能が必要です。ピックリストがその仕事に最適なrichfacesオブジェクトになると思いました。

4

5 に答える 5

6

解決策を見つけたようです。

<rich:pickList value="#{aBean.rightSideValues}"> 
        <f:selectItems value="#{aBean.leftSideValues}"/>
</rich:pickList>
  • "#{aBean.rightSideValues}"オブジェクトのリストまたは配列を指す必要があります。これらの値を使用して、選択リストの右側に入力されます。

  • #{aBean.leftSideValues}SelectItem オブジェクトのリストを指す必要があります。

1 つの通知 - SelectItem オブジェクトは、"#{aBean.rightSideValues}" .

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;
}

SelectItem は最初の引数を取り、この引数は SomeObject への参照であることに注意してください。内部では、豊富な顔がメソッドの助けを借りて の"#{aBean.rightSideValues}"オブジェクトと のオブジェクトを比較します#{aBean.leftSideValues}

SomeObject.equals()

于 2010-06-30T14:19:48.463 に答える
3

このコードが必要です:

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

そしてあなたが望むあなたの豆で:

private String[] chosenRoles;

+ getter/setter 

デフォルトのロールを作成する場合は常に、chooseRoles配列にロールを追加するだけです(たとえば、Beanコンストラクターで)。このように、chosenRolesには常に選択リストの右側の要素が含まれますが、左側の要素は配列に含まれません。

お役に立てれば!

于 2009-05-08T19:17:32.900 に答える
1

テキスト以外の値が必要な場合は、コンバーターを作成する必要があります。

http://programmingnutsandbolts.blogspot.com/2009/08/richfaces-picklist-converters.htmlを参照してください

于 2010-08-05T11:04:06.213 に答える
0

pickList の値を SelectItem の値の配列に設定します。

右側で開始するものは何でも、基本的には pickList のデフォルト値になります。

    <rich:pickList value="#{aBean.rightSideValues}"> 
        <f:selectItems value="#{aBean.leftSideValues}"/>
    </rich:pickList>
于 2009-05-08T14:20:42.440 に答える