0

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

这是我的要求的详细信息。

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

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

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

3) 一旦“实体”被读取,服务器将做必要的动态填充“someComponent”。

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

我已经为“渲染响应阶段之后”尝试了 PhaseEventListener,但没有运气。看起来我缺少一些基本的东西,因为我是 JSF 的新手。

有人做过同样的实验吗?

先感谢您。

尤尼斯·瓦迪

4

1 回答 1

0

如果您的目标是支持使用参数调用方法的 EL 2.2 容器和/或为您的 webapp 提供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。

于 2011-08-25T13:53:16.153 回答