我有一个 JSF 应用程序,我需要根据页面的某些参数动态创建几乎所有 UIComponents。组件被创建并添加到 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);
尽我所能,我需要创建一个 ValueExpression 将 cfaItems 列表绑定到 cfaMenu 但找不到任何示例是一个问题。我认为我需要做这样的事情
String menuBinding =
"#{" + beanName + ".cfaItems}";
ValueExpression menuVE = getApplication().getExpressionFactory().
createValueExpression(FacesContext.getCurrentInstance().
getELContext(), menuBinding, String.class);
cfaMenu.setValueExpression("value", menuVE);
但我不认为这是正确的。有什么建议么?