0

自動提案アイテムで入力テキストを作成します

<af:inputText label="Seller" id="Seller"
              valueChangeListener="#{managedBeanTest.OnChangeSeller}" autoSubmit="true"
              autoComplete="on">
  <af:autoSuggestBehavior suggestedItems="#{managedBeanTest.OnSearchSellers}"/>
</af:inputText>

SelectItem 値をクラス Item に設定します

public class Test
{
    public static class Item
    {
        public Item(int id, String code, String name) { ... }
        public String toString() { ... }
    }

    public List<SelectItem> OnSearchSellers(String search)
    {
        ResultSet rs;
        ...
        List<SelectItem> result = new ArrayList<SelectItem>();

        while (rs.next())
            result.add(new SelectItem(new Item(rs.getInt(1), rs.getString(2), rs.getString(3))));

        return result;
    }

    public void OnChangeSeller(ValueChangeEvent valueChangeEvent)
    {
        Object newVal = valueChangeEvent.getNewValue();

        if(newVal != null)
          System.out.println("OnChangeSeller: " + newVal.getClass().getName());
    }
}

しかし、OnChangeSeller には java.lang.String しかありません。元の選択したアイテムの値 (Item クラス) を取得するにはどうすればよいですか?

4

3 に答える 3

0

valueChangeEvent.getOldValue()にはこれがありませんか?

于 2012-07-17T16:42:44.703 に答える
0

「valueChangeEvent.getOldValue()にはこれがないのでは?」

はい、ADF バインディングを使用する場合。この場合、返される値はリストのインデックスです

于 2012-07-19T05:54:02.573 に答える
0

実際に Java オブジェクトを HTML ページに渡すことは、ブラウザーが String 値のみを表示するため機能しません (レンダリングされた HTML ページを見てください)。したがって、オブジェクトのインデックスを値として渡す必要があります。次に、ユーザーが値を選択すると、インデックスを取得して、関心のある実際のオブジェクトのリストを検索します。

フランク

于 2012-07-18T06:06:31.163 に答える