根据属性中的自定义元数据,用代码填充SelectOneMenu



我需要一个解决方案来填充代码SelectOneMenu使用一些元数据指定为该组件的属性。

这是我的详细要求。

1)开发人员将指定如下内容:

<h:selectOneMenu id="someComponent" value="#{someController.someModel.someField}">
    <f:attribute name="entity" value="somepackage.SomeEntity" />
</h:selectOneMenu>

2)第一次请求包含上述内容的页面时,服务器应该能够读取'entity'属性

3)一旦读取了'entity',服务器就会动态地填充' someecomponent '。

我对应该使用'entity'属性并生成要在' someecomponent '中显示的内容的代码没有问题。我的问题是找到合适的地方有效地调用这段代码。

我已经尝试了"渲染响应阶段后"的PhaseEventListener,但没有运气。由于我是JSF的新手,看起来我遗漏了一些基本的东西。

有人经历过同样的实验吗?

提前谢谢你。

尤尼斯Ouadi

如果你的目标是一个支持带参数调用方法的EL 2.2容器,并且/或者在你的web应用程序中提供JBoss EL,以便它也能在EL 2.1上工作,那么应该可以使用以下构造:

<h:selectOneMenu id="someComponent" value="#{someController.someModel.someField}">
    <f:selectItems value="#{someProvider.selectItems('somepackage.SomeEntity')}" />
</h:selectOneMenu>

public List<SelectItem> getSelectItems(String className) {
    // ...
}

我将引入一些延迟加载和/或基于请求的缓存机制,以及在bean的生命周期中可以多次调用的getter。

相关内容

  • 没有找到相关文章

最新更新