我有以下JSF代码片段:
<p:selectManyMenu>
<f:selectItems value="#{templateBean.getTemplates(TemplateType.TEXTBLOCK)}"
</p:selectManyMenu>
如何将enum
- 参数传递给getTemplates()
-function?
支持bean具有以下功能:
public List<Template> getTemplates(TemplateType templateType)
TemplateType
是enum
:
public enum TemplateType {
ANSWER,
TEXTBLOCK;
}
我想到的唯一方法是创建另一个函数,它返回enum
- 类型的实际选项,但这似乎有些无意义。我还尝试将enum
- 类设为Scope
,但我无法访问它。
答案 0 :(得分:4)
您可以将枚举值作为字符串传递。 EL已经为此建立了强制。
<f:selectItems value="#{templateBean.getTemplates('TEXTBLOCK')}" />
每当您想要在视图中包含所有枚举值时,<o:importConstants>
通常都很方便,例如作为下拉项目如下:
<f:selectItems value="#{TemplateType}" />
答案 1 :(得分:3)
如果你想使用这样的枚举(TemplateType.TEXTBLOCK
),你应该试试o:importConstants(omnifaces}
将以下内容放在您的页面上
<o:importConstants type="com.my.package.name.TemplateType" />
然后像这样使用它
<p:selectManyMenu>
<f:selectItems value="#{templateBean.getTemplates(TemplateType.TEXTBLOCK)}"
</p:selectManyMenu>
当然你总是可以使用枚举这样的纯文本:
value="#{templateBean.getTemplates('TEXTBLOCK')}"