2

ページへの特定のパラメーターに基づいて、ほとんどすべての UIComponents を動的に作成する必要がある JSF アプリケーションがあります。コンポーネントが作成され、HtmlPanelGrid に追加されます。HtmlLabel、HtmlInputText、UISelectBoolean、HtmlCommandButton の作成に成功しました。ここで、HtmlSelectOneMenu を作成して追加する必要があります。選択する項目のリストを添付する方法を示す例を見つけるのに苦労しています。

選択リストは次のとおりです。ここで、cfaItems をバッキング Bean のプロパティにしました。

SelectItem[] cfaItems = {
    new SelectItem(1, "1"),
    new SelectItem(2, "2"),
    new SelectItem(3, "3"),
    new SelectItem(4, "4"),
    new SelectItem(5, "5")
};

HtmlSelectOneMenu の作成:

    HtmlSelectOneMenu cfaMenu = (HtmlSelectOneMenu)
        getApplication().createComponent(HtmlSelectOneMenu.COMPONENT_TYPE);
    cfaMenu.setId("cfaMenu");
    grid.getChildren().add(cfaMenu);

私が理解できる限り、cfaItemsリストをcfaMenuにバインドするValueExpressionを作成する必要がありますが、例が見つからないのは問題です。私はこのようなことをする必要があると思います

    String menuBinding =
        "#{" + beanName + ".cfaItems}";
    ValueExpression menuVE = getApplication().getExpressionFactory().
        createValueExpression(FacesContext.getCurrentInstance().
        getELContext(), menuBinding, String.class);
    cfaMenu.setValueExpression("value", menuVE);

しかし、それは正しくないと思います。助言がありますか?

4

1 に答える 1

2

UISelectItemsビュー側で行う場合とまったく同じように、指定された選択項目配列を値としてインスタンスを作成し、それをメニューの子として追加する必要があり<f:selectItems>ます。

UISelectItems selectItems = new UISelectItems();
selectItems.setValue(cfaItems);
cfaMenu.getChildren().add(selectItems);
于 2012-11-08T17:21:16.663 に答える