3

Primefacesp:selectOneMenuコンポーネントは、以前に選択されたアイテムに焦点を合わせていないようです。たとえば、国のメニューを次のように設定している場合

    <p:selectOneMenu id="countryMenu" value="#{myBean.selectedCountry}">
        <f:selectItem value="#{null}" itemLabel="Please select a Country..."/>
        <f:selectItems value="#{myBean.countries}" var="country" 
                       itemValue="#{country.code}" 
                       itemLabel="#{country.name}"/>
        <p:ajax update="anotherComponent"/>
    </p:selectOneMenu>

リストから国を選択し、メニューをもう一度クリックすると、最初から国のリストが表示されます。選択した国を保持します。下にスクロールしてフォーカスすることはありません。

標準のJSFh:selectOneMenuは、期待される動作を表示します。以前に選択した国が表示された状態で開きます。

これにはいくつかのトリックがありますか、それともこれはバグですか?

また、キーボード入力への応答方法に関する他の多くの癖があります(たとえば、メニューにフォーカスがあるときに上/下を押してもメニューが開かない)、これは少しイライラします。

私が使用しているもの:

  • Primefaces 3.1
  • Glassfish 3.1.1
  • NetBeans 7.1
4

3 に答える 3

0

バグではありません。CountryクラスのメソッドequalsTo(Object o)をオーバーライドする必要があります。compareTo(Object o)

あなたがそれをした後、それはうまくいくでしょう。

于 2012-03-30T08:35:31.060 に答える
0

Primefaces 3.4(現時点では現在のバージョン)に更新した場合でも、同様の動作が発生しますが、これは予期されていません。

最初のアイテムに同じ動作が発生した場合のイベントはnoSelectionOption="true"、レビューのバグのようであり、ここここで報告されます。また、それについてのフォーラムスレッドがあります。

itemDisabledしかし、私にとってこの問題を解決したので、プロパティを使用してみることができます。

<p:selectOneMenu id="hero" value="#{bean.hero}">
    <f:selectItem itemLabel="Select..." itemDisabled="true" />
    <f:selectItems var="item" value="#{bean.heroes}" itemLabel="#{item.name}" />
</p:selectOneMenu>

お役に立てば幸いです。

于 2012-09-25T19:22:21.373 に答える
0

わかりました、これは修正されたようです!

Primefacesのさまざまなバージョンでいくつかのテストを実行したところ、次の結果が得られました。

  • 3.1-動作しませんでした

  • 3.2-動作しませんでした

  • 3.3-機能しませんでした(以前に選択した値が短時間点滅し、最初のメニュー項目が表示されます)

  • 3.4-期待どおりに動作します

:3.3から3.4にアップグレードするときは、ブラウザーのキャッシュ(ChromeとFirefoxの場合)をクリアする必要がありました(これを実行するまで、アイテムはまったく選択できませんでした)。

于 2012-11-26T23:18:26.953 に答える