web-dev-qa-db-ja.com

PrimefacesdataTableに行を動的に追加する

ボタンをクリックしてデータテーブルに行を追加する必要があります-"従業員の追加"。

データテーブルには、Bean内の従業員の固定リストに対応するレコードが表示されます。

私がしているのは、「従業員の追加」ボタンをクリックして、従業員の空のレコードをempListに追加することです。

これを行うためのより良い方法はありますか?

ありがとう。

10
Shikha Dhawan

list_Recsはレコードのリストであり、データテーブルに表示されます。

<p:dataTable id="myTable" value="#{myBean.list_Recs}" selectionMode="single" var="myTableVar" selection="#{myBean.currentRec}">
    <p:ajax event="rowSelect" listener="#{myBean.handleRowSelect}" update=":myForm:myPanel"/>
    <p:column>
        <f:facet name="header">
            <h:outputLabel value="Field 1" />
        </f:facet>
        <h:outputLabel value="#{myTableVar.Field1}"/>
     </p:column>

     <p:column>
         <f:facet name="header">
             <h:outputLabel value="Field 2" />
         </f:facet>
         <h:outputLabel value="#{myTableVar.Field2}" />
     </p:column>

     <f:facet name="footer">
         <p:commandButton value="New" action="#{myBean.prepareForInsert}" update=":myForm:myPanel"/>
     </f:facet>
</p:dataTable>

<h:panelGrid id="myPanel" columns="2" >
    <h:outputLabel value="Field 1"/>
    <p:inputText id="fld1" value="#{myBean.newRec.field1}" />
    <h:outputLabel value="Field 2"/>
    <p:inputText id="fld2" value="#{myBean.newRec.field2}" />
    <p:commandButton action="#{myBean.createAction}" value="Submit" update="myGrowl myTable" />
</h:panelGrid>

Newボタンがクリックされたら、myBeanのprepareForInsertルーチンにnewRecの空のインスタンスを作成します。そのため、myPanelはフィールドの空白で埋められます。送信時に、newRecをlist_Recsに追加すると、myTableの更新により、新しいレコードがデータテーブルに表示されます。お役に立てれば。

4
rags

追加ボタンをクリックすると、ダイアログまたはポップアップが開きます。次に、必須フィールドに入力します(従業員オブジェクトに添付されます。保存/送信するときに、そのオブジェクトを従業員オブジェクトのリストに追加します。データテーブルを再レンダリングします。または、最初に空の従業員オブジェクトをリストに追加します。入力フィールドを含むデータテーブル。追加時に、新しい従業員をリストに追加し、リストを再レンダリングします。

4
roel

別のオプションは、データテーブルのフッターファセットに空の従業員を表示し、ユーザーが追加ボタンをクリックした場合にそれをリストに追加することです。これにより、正しく入力された従業員オブジェクト/エンティティのみがリストに追加されるようにすることができます。

3
Matt Handy