首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用表达式语言传递枚举参数?

如何用表达式语言传递枚举参数?
EN

Stack Overflow用户
提问于 2015-02-19 12:44:43
回答 2查看 2K关注 0票数 0

我有以下JSF代码片段:

代码语言:javascript
复制
<p:selectManyMenu>
    <f:selectItems value="#{templateBean.getTemplates(TemplateType.TEXTBLOCK)}"
</p:selectManyMenu>

如何将enum-Parameter传递给getTemplates() -function?

后台bean具有以下功能:

代码语言:javascript
复制
public List<Template> getTemplates(TemplateType templateType)

TemplateType是一个enum

代码语言:javascript
复制
public enum TemplateType {
    ANSWER,
    TEXTBLOCK;
}

唯一的方法,在我的脑海中,是做另一个函数,返回我的实际选项的enum-type,但这似乎是某种无意义的。我还试图给enum-Class一个Scope,但我无法访问它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-19 13:08:39

您可以将枚举值作为字符串传递。艾尔对此有着内在的强制。

代码语言:javascript
复制
<f:selectItems value="#{templateBean.getTemplates('TEXTBLOCK')}" />

通常,只有当您希望视图中有所有枚举值时,<o:importConstants>才是方便的,例如,如下面所示的下拉项:

代码语言:javascript
复制
<f:selectItems value="#{TemplateType}" />
票数 4
EN

Stack Overflow用户

发布于 2015-02-19 12:48:34

如果你想要像那样使用枚举(TemplateType.TEXTBLOCK),你应该尝试O:进口商 (由全貌)

将以下内容放在您的页面上

代码语言:javascript
复制
<o:importConstants type="com.my.package.name.TemplateType" />

那就像这样用吧

代码语言:javascript
复制
<p:selectManyMenu>
    <f:selectItems value="#{templateBean.getTemplates(TemplateType.TEXTBLOCK)}"
</p:selectManyMenu>

当然,您可以始终使用枚举(纯文本),如下所示:

代码语言:javascript
复制
value="#{templateBean.getTemplates('TEXTBLOCK')}"
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28606770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档