0

プロジェクトで PrimeFaces の pickList コンポーネントを使用しています。しかし問題は、アクション関数が呼び出されないことです。

<p:pickList id="pickList" value="#{pickListBean.names}" var="name"
    itemLabel="#{name}itemValue="#{name}" />
<p:commandButton ajax="false" id="submit" value="Submit" type="submit"
    action="#{pickListBean.performAction}" />

私のマネージドBeanは次のとおりです。

@ManagedBean(name="pickListBean")
@SessionScoped
public class PickListBean {
private DualListModel<String> names;
private List<String> nam1;
private List<String> nam2;

public PickListBean() {
    nam1 = new ArrayList<String>();
    nam2 = new ArrayList<String>();

    nam1.add("Ammar");
    nam1.add("Nisar");
    nam1.add("Khalid");
    nam1.add("Haris");
    nam1.add("Yasir");

    names = new DualListModel<String>(nam1, nam2);
}

public DualListModel<Player> getPlayers() {
    return players;
}
public void setPlayers(DualListModel<Player> players) {
    this.players = players;
}

public DualListModel<String> getNames() {
    return names;
}
public void setNames(DualListModel<String> names) {
    this.names = names;
}

public String performAction()
{
    for (Iterator iterator = nam2.iterator(); iterator.hasNext();) {
        String name = (String) iterator.next();
        System.out.print("\t" + name);
    }
    return "";
}

}

助けてくれてありがとう。

4

3 に答える 3

0

選択した値を取得するには、names.getTarget() を使用して、選択のリストを取得します。

于 2012-05-20T03:05:35.810 に答える
0

よし!アクションボタンが機能するほど問題はありません.デュアルリストからデータを取得する方法を知りたいのですが、正しく理解できましたか? その場合、デュアルリストの各位置を取得するには、次のようにする必要があります

public void performAction(){
      String sor;
      String tar;
      sor=names.getSource().get(i);
      tar=names.getTarget().get(i);
      System.out.println("works"+sor+tar);

  }

ここで、i はリスト内の現在の位置を上から数えた数です (つまり、i=0 の場合、各リストの一番上の位置を取得します) 単純な for ループを使用すると、反復してすべてのエントリを取得できます。また、イテレータを使用する必要がある場合は、names.getSource().iterator() を使用でき、getTarget() にも同じことができると思います。イテレータに加えて、上記の解決策を試してみたところうまくいきましたので、お役に立てば幸いです。

于 2012-05-22T10:23:54.460 に答える
0

まず、ピックリストとコマンド ボタンはフォーム内にネストされていますか? アクションが機能するかどうかを確認するには、println を for ループから取り出します。

public String performAction() {

    System.out.println("works");

}

于 2012-05-19T15:35:53.273 に答える