0

いくつかのデータを含む selectOneListBox があります。値を選択して REMOVE ボタンをクリックした後、値を削除する必要があります。Bean でこれを行う必要があります。問題はifステートメントまたはにあると思いますcodeValue

私のxhtml:

  <p:selectOneListbox id="list" value="#{codelistBean.codeValue2}"                  style="height:300px;overflow:scroll;margin:1px;width:250px"
    autoUpdate="true">
    <f:selectItems value="#{codelistBean.code2Value}" />
    </p:selectOneListbox>`

私の豆:

変数

String codeValue;

 private static Map<String, Object> codeValue = new LinkedHashMap<String, Object>();

ここで、いくつかの値を Map に入れています。

codeValue.put(getLabel(), getValue()); 

remove メソッド

public void removeCode(ActionEvent e) {

        for (Iterator<Map.Entry<String, Object>> it = codeValue.entrySet()
                .iterator(); it.hasNext();) {

            Entry<String, Object> entry2 = it.next();

            if (entry2.getKey().equals(codeValue.get(codeValue2))) {
                it.remove();

            }
        }

    }

最後に、マップを JSF に返して表示します

public Map<String, Object> getCode2Value() {
        return codeValue;
    }

手伝ってくれてありがとう!

4

1 に答える 1

0

SelectItem静的 HashMap を使用する代わりに、 s のリストを定義できます。

String codeValue2;
List<SelectItem> codeValue = new ArrayList<SelectItem>();

//getters & setters

HashMap と同じようにキーと値のペアを保持します。唯一の違いは、値とラベルの順序です。

codeValue.add(new SelectItem(value,label))

remove 関数は単純化できます。

   public void removeCode(ActionEvent e) {

       SelectItem remove = null;
       for (SelectItem item : codeValue) {
           if (item.getValue().equals(codeValue2)) {
               remove = item;
           }
       }
       codeValue.remove(remove);
    }

ActionEvent eメソッドヘッダーからパラメーターを削除することもできますが、必須ではありません。

<p:selectOneListbox id="list" value="#{codelistBean.codeValue2}"
                    style="height:300px;overflow:scroll;margin:1px;width:250px"
                    autoUpdate="true">
    <f:selectItems value="#{codelistBean.codeValue}" />
</p:selectOneListbox>

あなたのjsfページでは、 whilef:selectItems value="#{codelistBean.codeValue}"へのポイントは実際の選択を表しています。List<SelectItem>value="#{codelistBean.codeValue2}"

list最後に、REMOVE ボタンを実行した後に更新することを忘れないでください。

<p:commandButton actionListener="#{codeListBean.removeCode}" 
                 value="REMOVE" update="list"/>
于 2012-11-12T14:16:33.233 に答える