gpt4 book ai didi

jsf - 当使用 templating, 时,我应该在哪里声明 ?

转载 作者:行者123 更新时间:2023-12-03 11:49:06 26 4
gpt4 key购买 nike

我在将 JSF 应用程序转换为可添加书签的页面方面取得了很大进展,但我想知道我的做法是否正确。一个问题是 是否有最佳实践位置? f:元数据标签?

我的典型 Facelets 客户端页面如下所示:

    <ui:composition template="./pattern.xhtml">

<ui:define name="content">

<f:metadata>
<f:viewParam name="userId" value="#{bean.userId}" />
<f:viewParam name="startRecord" value="#{bean.startRecord}" />
<f:viewParam name="pageSize" value="#{bean.pageSize}" />
<f:viewParam name="sort" value="#{bean.sort}" />
</f:metadata>

<h1>Data Table</h1>

etc

所以 f:元数据和 child f:viewParam 标 checkout 现在我的页面正文中。我的 模式.xhtml 模板还有一个部分(名为“header”),可以将这些标签放在 header 部分中。他们应该放在那里吗?它有什么不同,还是我已经准备好了一些我还没有看到的副作用?

最佳答案

从技术上讲,在何处声明 <f:metadata> 并不重要。在 View 中,只要它在顶级 View 中(因此,当使用模板时,在模板客户端中,因此不在主模板中)。当 View 被构建时,元数据基本上不是 JSF 组件树的一部分,而是 View 根的一部分(您可以通过 ViewDeclarationLanguage#getViewMetadata() 在每个 View 的基础上获得)。

大多数自我记录将放置 <f:metadata>在 View 的顶部,这样您就可以第一眼看到任何元数据,而无需滚动到 View 源代码的一半或底部。

使用普通页面时,只需将其放在 <h:head> 之前.

<!DOCTYPE html>
<html lang="en"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
>
<f:metadata>
<f:viewParam name="userId" value="#{bean.userId}" />
<f:viewParam name="startRecord" value="#{bean.startRecord}" />
<f:viewParam name="pageSize" value="#{bean.pageSize}" />
<f:viewParam name="sort" value="#{bean.sort}" />
</f:metadata>

<h:head>
...
</h:head>

<h:body>
...
</h:body>
</html>

使用模板时,推荐的方法,如 the <f:metadata> tag documentation 中所述, 将声明一个单独的 <ui:insert name="metadata">在主模板中,让客户端定义 <f:metadata><ui:define name="metadata"> .
<ui:composition template="/WEB-INF/pattern.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
>
<ui:define name="metadata">
<f:metadata>
<f:viewParam name="userId" value="#{bean.userId}" />
<f:viewParam name="startRecord" value="#{bean.startRecord}" />
<f:viewParam name="pageSize" value="#{bean.pageSize}" />
<f:viewParam name="sort" value="#{bean.sort}" />
</f:metadata>
</ui:define>

<ui:define name="content">
<h1>Data Table</h1>
...
</ui:define>
</ui:composition>

关于jsf - 当使用 <ui :composition> templating, 时,我应该在哪里声明 <f :metadata>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9856847/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com