0

CRUDで生成された作成フォームがあります:

<div class="create-form">
    <h:form>
        <h:inputText id="name" value="#{pointController.selected.name}" title="#{bundle.CreatePointTitle_name}" required="true" />

        <h:inputText id="term" value="#{pointController.selected.term}" title="#{bundle.CreatePointTitle_term}" required="true" />

        <p:commandButton styleClass="btn" action="#{pointController.create}" value="#{bundle.CreatePointSaveLink}" />
    </h:form>
</div>
<button>add new form</button>

クリックすると、javascriptを使用して上記と同じ別のフォームを作成するボタンがあります。(2 inputText、name and term)

私の目標は、2つ以上のフォームで、ユーザーが必要とするフォームの数に応じて、1つのcommandButtonをクリックすると、データベースにすべてが挿入されることです。

例:

first form: name = first form test, term = first form testterm
2nd form: name = 2nd form test, term= 2nd form testterm

コマンドボタンをクリックした後

データベース内の同じテーブルに2行が挿入されます。

しかし、このためのページの構造はどうなるかわかりません。

4

1 に答える 1

1

JSFコンポーネントを使用して、1回のリクエストで多くのフォームからデータを送信することはできません。すべてのデータをシリアル化して手動で送信する必要があります。List<Item>ボタンをクリックするたびに、リストに新しいアイテムが作成され、リストのアイテムを表示するように更新されますUIContainer

これは、上記の開始例になります。

@ManagedBean
@ViewScoped
public class ItemBean {
    private List<Item> lstItem;

    public ItemBean() {
        lstItem = new ArrayList<Item>();
        addItem();
    }
    //getters and setter...

    public void addItem() {
        lstItem.add(new Item());
    }

    public void saveData() {
        //you can inject the service as an EJB or however you think would be better...
        ItemService itemService = new ItemService();
        itemService.save(lstItem);
    }
}

JSFコード(<h:body>コンテンツのみ):

<h:form id="frmItems">
    <h:panelGrid id="pnlItems">
        <ui:repeat value="#{itemBean.lstItem}" var="item">
            Enter item name
            <h:inputText value="#{item.name}" />
            <br />
            Enter item description
            <h:inputText value="#{item.description}" />
            <br />
            <br />
        </ui:repeat>
    </h:panelGrid>
    <p:commandButton value="Add new item" action="#{itemBean.addItem}"
        update="pnlItems" />
    <p:commandButton value="Save data" action="#{itemBean.saveData}" />
</h:form>
于 2013-02-27T04:33:18.780 に答える