jsf-2 - 何时使用 f :view and f:subview

标签 jsf-2 view facelets subview

我不确定使用<f:view>有什么好处和<f:subview> 。 我注意到人们可以在不使用 JSF 页面的情况下编写它们。

使用这些标签有什么好处?

最佳答案

<f:view> 仅当您想显式指定/覆盖任何可用属性(例如 locale)时才有用。 , encoding , contentType等或者想要附加一些阶段监听器。例如

<f:view locale="#{user.locale}" encoding="UTF-8" contentType="text/html">

如果您不指定它,那么将仅使用合理的 JSF 默认值,分别是 UIViewRoot#getLocale() , UTF-8Accept 最接近的匹配请求 header 。应该注意的是 Accept 最接近的匹配请求 header 并不总是完全正确。有时它会导致 application/xhtml+xml因为 .xhtml 的存在URL 中的扩展名,以防 Facelets 和 Web 浏览器未配置为将其解释为 text/html默认情况下(如 MSIE)。您确实希望通过显式将其设置为 text/html 来避免这种错误的内容类型。 .

请注意,将其放在模板中的位置并不重要。您甚至可以将其作为 <ui:define> 的直接子级放入模板客户端中。 。然而,规范位置是 <html> 的直接子级。从而包装 <h:head><h:body> 。这也是在遗留 JSP 中实际需要的实现方式。在 Facelets 中,它是可选的并被视为元数据。

另请参阅:

<小时/>

<f:subview> 将创建另一个命名容器上下文。当您想要重用包含文件(该文件又在同一 View 根目录中多次包含固定组件 ID)时,这特别有用,否则您将收到重复的组件 ID 错误。然而,从 JSF 2.0 开始,这样的包含文件可以更好地成为一个复合组件,它本身就已经是一个命名容器。

如果您不指定它,那么如果您不在 View 中多次重复使用具有相同 ID 的组件,也不会造成损害。

另请参阅:

关于jsf-2 - 何时使用 f :view and f:subview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8883476/

相关文章:

java - 从 session 监听器访问和修改应用程序范围的托管 Bean 的属性

使用 CTE 创建的 Hadoop View 行为不当

database - 从数据库加载 Facelets 模板

jsf-2 - 多个 ui :includes 的缓慢

java - 用 JSF 反向 Ajax?

java - 是否不支持 meta http-equiv 值缓存控制?

java - Android RunOnUIThread 不会永久改变 View 可见性

android - 在使线性布局容器无效后未调用 subview 的 ondraw()

jsf h :messages/h:message for specific clientId

jsf - 如何使用 JSF 2.0 复合组件实现动态列表?