0

ZK を使用して Web アプリケーションで作業しています。ユーザーが指定した数の行windowをレンダリングする必要がある場所に苦労しています。grid次のようになります。

<grid>
    <columns>
        <column width="150px"/>
        <column width="350px"/>
    </columns>
    <rows>
        <row>
            <cell>
                <label value="Rows to add"/>
            </cell>
            <cell>
                <textbox id="txt_rowamount"/>
            </cell>
        </row>
    </rows>
</grid>

<grid id="grid">
    <columns>
        <column width="100px" label="Field 1" align="center"/>
        <column width="100px" label="Field 2" align="center"/>
        <column width="100px" label="Field 3" align="center"/>
    </columns>

    <rows id="rows" forEach="${rowModelList}">
        <row>
            <cell>
                <textbox value="${each.field1}" />
            </cell>
            <cell>
                <textbox value="${each.field2}" />
            </cell>
            <cell>
                <textbox value="${each.field3}" />
            </cell>
        </row>
    </rows>
</grid>

<button id="btn_generate" label="Generate Rows"/>

したがって、 4 つのコンポーネントとそれぞれに 3 つのコンポーネントがtxt_rowamountあるグリッドに 4と入力すると、 . テキストボックスは空である必要があり、すべてのアイテムのユーザー入力をバインドする必要があるすべてのテキストボックスを完了すると、明確になりますか?rowtextboxrowfieldNrowModel

私は作曲家でこのようなことを試みています:

private ListModel<RowModel> rowModelList;

@Autowired
private Grid grid;

@Override
public void doAfterCompose(final Window component) throws Exception {
    super.doAfterCompose(component);

    rowModelList = new ListModelList<>();

    grid.setVisible(false);
}

public void onClick$btn_generate() {
    // TODO Add four empty elements to rowModelList

    grid.setVisible(true);
}

RowModelようであること

public class RowModel {

    private String field1;
    private String field2;
    private String field3;

    // ommited constructors, getters and setters

}

アプローチは現在のMVCではなくMVVMであるべきだと思いますが、これを行う方法がわかりません。その上、同じアプリケーションでアプローチを混在させることができるかどうか、それを行うことの長所と短所はわかりません。

ZK グリッドのデモを見たことがありますが、それらはすべて既にデータが入力されたオブジェクトを使用してテーブルをレンダリングしているため、役に立ちません。

誰かがこの問題で私に手を差し伸べることができれば、それは大歓迎です. コードまたはこの問題の要件についてさらに情報が必要な場合は、コメントアウトしてください。

ご回答ありがとうございます。

4

1 に答える 1