私は Java/JSF 開発 (以前はメインフレームのレガシー) にかなり慣れていないので、誰かが私が尋ねようとしていることが可能かどうか、またその方法を教えてくれることを願っています。または、少なくとも私を正しい方向に向けてください。
同じコンポーネントを最大 30 回まで何度でも追加できるポートレットを作成しようとしています。最終的に、これらのコンポーネントの背後にあるデータはそれぞれ異なりますが、同じデータベースからのものです。これまでに行ったことは、コンテナ コンポーネントと、メソッドを呼び出してコンテナに何かを追加するボタンを作成することです。次のように:
<h:body>
<h:form>
<ice:panelGrid binding="#{simpleBean.containerComponent}"/>
<br/>
<ice:commandButton value="add new section" action="#{simpleBean.addComponent}" />
</h:form>
</h:body>
私が苦労しているのは、コンポーネントを作成してレンダリングするためのバッキング Bean です。現時点では、繰り返されるものを作成しようとしています。最終的なコードはこれよりも複雑になります。
private HtmlPanelGrid containerComponent;
private int i = 1;
public void addComponent() {
UIColumn uiColumn = new UIColumn();
uiColumn.setId("UIColumn_"+i);
HtmlOutputText htmlOutputText = new HtmlOutputText();
htmlOutputText.setId("HtmlOutputText_"+i);
htmlOutputText.setValue("HtmlOutputText_1_Value");
HtmlInputText htmlInputText = new HtmlInputText();
htmlInputText.setId("HtmlInputText_"+i);
htmlInputText.setValue("HtmlInputText_1_Value");
uiColumn.getChildren().add(htmlOutputText);
uiColumn.getChildren().add(htmlInputText);
if (containerComponent == null) {
containerComponent = new HtmlPanelGrid();
}
containerComponent.getChildren().add(uiColumn);
i++;
}
ボタンが最初にクリックされたときに何かをレンダリングするコードを取得できますが、その後は何も起こりません。理想的な世界では、30 個の同じコンポーネントが画面に表示されます。
誰でもアドバイスを提供できますか?
前もって感謝します。
クリス