如何使用表达式语言传递枚举参数?
How to pass an enum parameter with expression language?
我有以下 JSF 代码片段:
<p:selectManyMenu>
<f:selectItems value="#{templateBean.getTemplates(TemplateType.TEXTBLOCK)}"
</p:selectManyMenu>
如何将 enum
参数传递给 getTemplates()
-功能?
backing bean有这个功能:
public List<Template> getTemplates(TemplateType templateType)
TemplateType
是一个 enum
:
public enum TemplateType {
ANSWER,
TEXTBLOCK;
}
我想到的唯一方法是创建另一个函数,让 returns 我成为那个 enum
类型的实际选项,但这似乎有点毫无意义。我也试过给enum
-Class一个Scope
,但是访问不了
如果你想像那样使用枚举 (TemplateType.TEXTBLOCK
) 你应该尝试 o:importConstants (by omnifaces)
将以下内容放在您的页面上
<o:importConstants type="com.my.package.name.TemplateType" />
那就这样用吧
<p:selectManyMenu>
<f:selectItems value="#{templateBean.getTemplates(TemplateType.TEXTBLOCK)}"
</p:selectManyMenu>
当然你总是可以像这样使用枚举纯文本:
value="#{templateBean.getTemplates('TEXTBLOCK')}"
您可以将枚举值作为字符串传递。 EL 内置了强制转换。
<f:selectItems value="#{templateBean.getTemplates('TEXTBLOCK')}" />
<o:importConstants>
通常只有在你想在视图中包含所有枚举值时才有用,例如作为下拉项如下:
<f:selectItems value="#{TemplateType}" />
我有以下 JSF 代码片段:
<p:selectManyMenu>
<f:selectItems value="#{templateBean.getTemplates(TemplateType.TEXTBLOCK)}"
</p:selectManyMenu>
如何将 enum
参数传递给 getTemplates()
-功能?
backing bean有这个功能:
public List<Template> getTemplates(TemplateType templateType)
TemplateType
是一个 enum
:
public enum TemplateType {
ANSWER,
TEXTBLOCK;
}
我想到的唯一方法是创建另一个函数,让 returns 我成为那个 enum
类型的实际选项,但这似乎有点毫无意义。我也试过给enum
-Class一个Scope
,但是访问不了
如果你想像那样使用枚举 (TemplateType.TEXTBLOCK
) 你应该尝试 o:importConstants (by omnifaces)
将以下内容放在您的页面上
<o:importConstants type="com.my.package.name.TemplateType" />
那就这样用吧
<p:selectManyMenu>
<f:selectItems value="#{templateBean.getTemplates(TemplateType.TEXTBLOCK)}"
</p:selectManyMenu>
当然你总是可以像这样使用枚举纯文本:
value="#{templateBean.getTemplates('TEXTBLOCK')}"
您可以将枚举值作为字符串传递。 EL 内置了强制转换。
<f:selectItems value="#{templateBean.getTemplates('TEXTBLOCK')}" />
<o:importConstants>
通常只有在你想在视图中包含所有枚举值时才有用,例如作为下拉项如下:
<f:selectItems value="#{TemplateType}" />