1

私は JSF と PrimeFaces を使用して、大学の課題としてアプリケーションを作成しています。私は何かを機能させるのに苦労しています。私は PrimeFaces を使用しており、5 つのタブを含むタブビューがあります。これらのタブの 1 つに、複数の行と列を持つ dataTable があります。これはすべて正常に機能しますが、(ページ全体) を再レンダリングせずにフォームを送信したいという問題があります。問題は、dataTable のすべての列に selectBooleanCheckbox があり、そのチェックボックスが選択されると、ボタンが消えるはずです。選択されていない場合は、ボタンが表示されます。これは onchange="this.form.submit()" または onclick="this.form.submit()" で問題なく動作しますが、アプリケーション全体が更新され、以前のタブではなく最初のタブが選択されますで。だから私は' プログラム全体を更新することなく、いくつかのものを送信して再レンダリングできるソリューションを探しています。これは私のコードです:

<body>
    <h:form id="customerForm">
        <p:dataTable id="customerlist" var="c" value="#{customerBean.customerList}">
            <p:column>
                <f:facet name="header">Select</f:facet>
                <center>
                    <p:selectBooleanCheckbox value="#{c.selected}" onchange="this.form.submit()"/>
                </center>
            </p:column>
        </p:dataTable>
        <h:commandButton id="testtest" value="test" rendered="#{customerBean.numberSelected() == 0}"/>
    </h:form>
</body>

簡単にするために、ほとんどの列を削除しました。これに対する解決策は何ですか?ajaxを使ってみましたが、うまくいきませんでした

<p:selectBooleanCheckbox value="#{c.selected}">
    <f:ajax event="click" execute="@form" render="@none"/>
</p:selectBooleanCheckbox>
4

1 に答える 1

2

本当にフォーム全体を送信する必要がありますか? ビューが再レンダリングされるだけで十分な場合は、フォームを更新してみてください。そのためには、primefaces ajax イベントを使用できます。

<p:selectBooleanCheckbox value="#{c.selected}">
    <p:ajax update="@form"/>  
</p:selectBooleanCheckbox>

これが機能しない場合は、「..ajax、機能しませんでした」の正確な意味を教えてください。送信された POST リクエストはありますか? アクション/セッターは呼び出されますか?

于 2013-05-04T16:46:00.370 に答える