jsf-2 - データテーブル - datatables ページング オプション



ボタンをクリックした後にデータが入力されたデータテーブルを表示したい (1)

私はこの方法でコードを書いています。ボタンをクリックすると、データテーブルにデータが入力されているように見えます。 その前にデータテーブルが表示されるべきではありません。

<p:commandButton value="Go" styleClass="apply_button" actionListener="#{searchBean.getUserList}">
    <f:attribute name="trigram" value="#{searchBean.trigram}"/>
    <f:attribute name="firstName" value="#{searchBean.firstName}"/>
    <f:attribute name="lastName" value="#{searchBean.lastName}"/>
</p:commandButton>

ここでメソッドgetUserList()は、データテーブルに取り込まれるべきデータのリストを返します。それは動作します。

<p:dataTable value="#{searchBean.listUser}" var="user">
    <p:column headerText="Trigram">
        <h:outputText value="#{searchBean.trigram}"/>
    </p:column>
</p:dataTable>

ボタンをクリックするとデータテーブルに表示されますが、空のフィールドがあるボタンをクリックする前にデータテーブルが表示されます。 ボタンをクリックした後にデータテーブルを表示するようにコードを変更するにはどうすればよいですか? コードは<h:form>タグ内にあります。

また、Managed BeanのsearchBean@ViewScopedます。

https://ffff65535.com


単純なゲッター/セッターを初期化することができます:

private boolean visible = false; // getter/setter

public void getUserList(ActionEvent event)
{
    setVisible(true);

    // Your code
}

そして、あなたのビューを次のように修正してください:

<p:commandButton value="Go" styleClass="apply_button" actionListener="#{searchBean.getUserList}" update="table-wrapper">
    <f:attribute name="trigram" value="#{searchBean.trigram}"/>
    <f:attribute name="firstName" value="#{searchBean.firstName}"/>
    <f:attribute name="lastName" value="#{searchBean.lastName}"/>
</p:commandButton>

<h:panelGroup id="table-wrapper">
    <p:dataTable rendered="#{searchBean.visible}" value="#{searchBean.listUser}" var="user">
        <p:column headerText="Trigram">
            <h:outputText value="#{searchBean.trigram}"/>
        </p:column>
    </p:dataTable>
</h:panelGroup>

ボタンのupdate属性、 h:panelGroupラッパー、および表のrendered属性に注意してください。