JSF 模板和控制器调用
JSF templating and controller invocation
我是 JSF 的新手,我已经阅读了一些规范,但还有很多地方我不明白。
我加入了一个项目,该项目使用 JSF1.2 + Richfaces 3.3 + 一些允许使用参数调用方法的 EL。
我创建了一个可重复使用的模板 xhtml,并且我有一个 bean 包含模板构建和呈现自身所需的所有数据。该 bean 在控制器中被引用。
模板有 2 个参数,controller 和一个用于生成保存数据的 bean 的字符串值 feature。我做了一些非常丑陋的事情来调用将在控制器上生成 bean 的方法:
<h:outputText value="#{controller.loadFeature(feature)}" />
然后我使用控制器引用的 bean 来构建视图
<ui:include src="#{controller.myLoadedBean.widgetPath}">
我在构建时需要这个 bean,因为根据数据,我必须包含其他嵌套的 xhtml 模板。但我不知道如何管理它:
- 如果控制器是请求范围的,则调用 loadFeature 方法的时间太晚,在 RENDER_RESPONSE 阶段,未使用加载的数据构建视图
- 如果控制器是会话范围的,则更糟,在 RENDER_RESPONSE 调用 loadFeature 方法,所以我第一次尝试加载页面时出现错误,页面是使用上一个请求的数据构建。
基本上,我需要的是能够在视图构建时使用模板参数调用控制器的方法。
我不知道如何做到这一点,或者根本不知道这是否可能。也许 JSF 中还有一些我不知道的其他机制允许调用控制器 before/when 正在构建视图。
任何帮助将不胜感激,谢谢
我的模板终于可以用了。我错了,JSF 和 Facelet 组件不应该调用方法来填充自己。
正确的MVC方式是先调用controller的一个方法,controller会构建view bean,然后只重定向到JSF view。
我是 JSF 的新手,我已经阅读了一些规范,但还有很多地方我不明白。
我加入了一个项目,该项目使用 JSF1.2 + Richfaces 3.3 + 一些允许使用参数调用方法的 EL。
我创建了一个可重复使用的模板 xhtml,并且我有一个 bean 包含模板构建和呈现自身所需的所有数据。该 bean 在控制器中被引用。
模板有 2 个参数,controller 和一个用于生成保存数据的 bean 的字符串值 feature。我做了一些非常丑陋的事情来调用将在控制器上生成 bean 的方法:
<h:outputText value="#{controller.loadFeature(feature)}" />
然后我使用控制器引用的 bean 来构建视图
<ui:include src="#{controller.myLoadedBean.widgetPath}">
我在构建时需要这个 bean,因为根据数据,我必须包含其他嵌套的 xhtml 模板。但我不知道如何管理它:
- 如果控制器是请求范围的,则调用 loadFeature 方法的时间太晚,在 RENDER_RESPONSE 阶段,未使用加载的数据构建视图
- 如果控制器是会话范围的,则更糟,在 RENDER_RESPONSE 调用 loadFeature 方法,所以我第一次尝试加载页面时出现错误,页面是使用上一个请求的数据构建。
基本上,我需要的是能够在视图构建时使用模板参数调用控制器的方法。
我不知道如何做到这一点,或者根本不知道这是否可能。也许 JSF 中还有一些我不知道的其他机制允许调用控制器 before/when 正在构建视图。
任何帮助将不胜感激,谢谢
我的模板终于可以用了。我错了,JSF 和 Facelet 组件不应该调用方法来填充自己。
正确的MVC方式是先调用controller的一个方法,controller会构建view bean,然后只重定向到JSF view。