0

<p:dialog>含む があり<h:selectOneMenu>ますvalueChangeListener。関連するコードは次のとおりです。

<p:dialog> 
    <h:form>
        <div>
            <h:selectOneMenu value="#{itemController.itemId}" valueChangeListener="#{itemController.chkItemType}" onchange="submit()">
                <f:selectItems value="#{itemController.itemsList}" />
            </h:selectOneMenu> 
        </div>
    </h:form>
</p:dialog>

呼び出されると、ダイアログが閉じます。開いたままにして、キャンセルボタンでのみ閉じたいと思います。どうすればこれを達成できますか?

4

1 に答える 1

1

それは予想される動作です。そこonchange="submit()"にある は、フォーム全体を同期的に送信し、完全なページのリロードを引き起こします。

送信を実行するには、代わりに ajax を使用する必要があります。onchangeこのタグだけで属性を置き換えます

<f:ajax />

の中に<h:selectOneMenu>。このようにして、フォームは非同期で送信され、デフォルトではページのリロードはまったくありません。

について何も言わなかった具体的な機能要件によっては、おそらくまったく必要valueChangeListenerなく、<f:ajax listener>.

<f:ajax listener="#{itemController.chkItemType}" />

ajax リクエストの実行が成功したときにページの一部を更新する場合は、そのrender属性を使用します。

以下も参照してください。

于 2012-12-28T11:17:21.710 に答える