【发布时间】:2015-01-29 10:50:02
【问题描述】:
我是 JSF 的新手,我已经阅读了一些规范,但仍有很多东西我不明白。
我加入了一个带有 JSF1.2 + Richfaces 3.3 + 一些允许使用参数调用方法的 EL 的项目。
我创建了一个可重用的模板 xhtml,并且我有一个 bean,其中包含模板构建和呈现自身所需的所有数据。 bean 在控制器中被引用。
模板有 2 个参数,controller 和一个字符串值feature,用于生成保存数据的 bean。我做了一些非常丑陋的事情来调用将在控制器上生成 bean 的方法:
<h:outputText value="#{controller.loadFeature(feature)}" />
然后我使用控制器引用的bean来构建视图
<ui:include src="#{controller.myLoadedBean.widgetPath}">
我在构建时需要这个 bean,因为根据数据,我必须包含其他嵌套的 xhtml 模板。但我不知道如何管理这个:
- 如果控制器是请求范围的,loadFeature 方法被调用得太晚,在 RENDER_RESPONSE 阶段,视图不是用加载的数据构建的
- 如果控制器是会话范围的,更糟糕的是,在 RENDER_RESPONSE 调用的 loadFeature 方法,所以我第一次尝试加载页面时出现错误,并且页面是使用的数据构建的之前的请求。
基本上,我需要的是能够在视图构建时使用模板参数调用控制器的方法。
我不知道如何实现这一点,或者是否有可能。也许 JSF 中还有其他一些我不知道的机制允许在构建视图之前/构建视图时调用控制器。
任何帮助将不胜感激,谢谢
【问题讨论】:
-
嗨!我希望我的小部件是可扩展的,并允许其他开发人员添加他们自己的嵌套小部件。然后,他们会将 xhtml 的路径放在配置文件中,由控制器读取并提供给 include 标记。有没有更好的方法来实现这一点?
标签: jsf templates dynamic richfaces jsf-1.2