プログラムで表示する必要がある Bean のフィールドがいくつかあります。次のようなものです:
HtmlPanelGrid panel = new HtmlPanelGrid();
panel.setColumns(4);
HtmlOutputLabel fieldOut = new HtmlOutputLabel();
fieldOut.setId("fieldOutId");
fieldOut.setValue("name");
panel.getChildren().add(fieldOut);
HtmlInputText fieldIn = new HtmlInputText();
fieldIn.setId("fieldInId");
fieldIn.setPartialSubmit(true);
fieldIn.setValueExpression(
"field", UtilFaces.createValueExpression("#{newElementBean.fieldName}",String.class));
panel.getChildren().add(fieldIn);
mainForm.getChildren().add(panel);
newElements.xhtml で、次のように mainForm にバインドされるフォームを定義しました。
<ice:form binding="#{newElementBean.mainForm}">
<ice:inputText id="ANOTHERFIELD" value="#{newElementBean.anotherField}"/>
<ice:commandButton action="#{newElementBean.save}" value="Save"/>
</ice:form>
保存ボタンをクリックして次のビューに移動すると、フィールド「ANOTHERFIELD」は Bean から値を取得して正しく表示されますが、動的に生成されたフィールドは空と表示されます。バッキング Bean の値も null です。バッキング Bean で作成した がValueExpression
機能していないようです。HtmlInputText
Mojarra 2.1.17 で Icefaces 3.3 を使用しています。
これはどのように発生し、どうすれば解決できますか?