单击按钮时如何在 JSF/PrimeFaces 中复制部分表单

How duplicate part of form in JSF/PrimeFaces on button click

我在底部有一个 "Add" 按钮,单击该按钮后,我希望它能复制现有表单下方的部分表单。如何更改新输入的自动 ID 和值,稍后我需要它来生成包含所有条目的报告。

<h:panelGrid columns="2">
        <p:outputLabel value="From: " />
                <p:inputMask id="date1" value="#{data.date1}" mask="99/99/9999"/>
                    <p:outputLabel value="To: " />
                 <p:inputMask id="date2" value="#{data.date2}" mask="99/99/9999"/>
                    <p:outputLabel value="Name: " />
                <p:inputText id=name1    value="#{data.name}" />

                    <p:outputLabel value="Description: " />
                <p:inputTextarea id=description1 value="#{data.description}" />
                    </h:panelGrid>

我会这样做:

在 ManagedBean 中创建数据对象示例的 ArrayList List<Data> dataList;,然后在视图中使用 dataTable 来显示每个数据对象的字段。

当您单击 "duplicate Button" 时,可以在您的 bean 中调用一个 action/ajax 方法来复制或向 dataList 添加新条目,...等等

类似于:

<h:dataTable var="data" value="#{bean.dataList}">
<h:column>
   <h:panelGrid columns="2">
        <p:outputLabel value="From: " />
        <p:inputMask id="date1" value="#{data.date1}" mask="99/99/9999"/>
        <p:outputLabel value="To: " />
        <p:inputMask id="date2" value="#{data.date2}" mask="99/99/9999"/>
        <p:outputLabel value="Name: " />
        <p:inputText id=name1    value="#{data.name}" />
        <p:outputLabel value="Description: " />
        <p:inputTextarea id=description1 value="#{data.description}" />
   </h:panelGrid>
</h:column>
</h:dataTable>