如何使用 f:metadata JSF 标签?

jac*_*ekn 5 jsf metadata

我有一个包含在另一个视图中的视图。我在包含的视图中遇到了 f:metadata 的问题。不知道该怎么做。我已经更新了两个视图并重新启动了服务器。没运气。

父视图

<ui:include src="sub_entityIndexPagination.xhtml">
    <ui:param name="entityIndexBean" value="#{articleIndexBean}"/>
</ui:include>
Run Code Online (Sandbox Code Playgroud)

子视图

<ui:composition 
  xmlns="http://www.w3.org/1999/xhtml"
  xmlns:c="http://java.sun.com/jsp/jstl/core"      
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  >

<f:metadata>
    <f:viewParam name="pn" value="#{entityIndexBean.currentEntityPageNumber}" />
     <f:event type="preRenderView" listener="#{entityIndexBean.toCurrentEntityPage()}" />
</f:metadata>

<c:forEach var="pageNumber" begin="1" end="${entityIndexBean.getEntityPageCount()}">   
    <h:outputLink value="ar_index.xhtml">
        <h:outputText value="${pageNumber}" />
            <f:param name="pn" value="${pageNumber}" />
    </h:outputLink> 
</c:forEach>
Run Code Online (Sandbox Code Playgroud)

JSF 实现

c:\tomee16\lib\myfaces-api-2.1.13.jar
Run Code Online (Sandbox Code Playgroud)

错误

/sub_entityIndexPagination.xhtml at line 9 and column 14 <f:metadata> Parent UIComponent j_id_9 should be instance of UIViewRoot

phaseId=RENDER_RESPONSE(6)

Caused by:
javax.faces.view.facelets.TagException - /sub_entityIndexPagination.xhtml at line 9 and column 14 <f:metadata> Parent UIComponent j_id_9 should be instance of UIViewRoot
at org.apache.myfaces.view.facelets.tag.jsf.core.ViewMetadataHandler.apply(ViewMetadataHandler.java:60)
Run Code Online (Sandbox Code Playgroud)

Bal*_*usC 7

<f:metadata>不能声明中包含文件。它必须在顶视图(您指示为“父视图”的文件)中声明。它应该正是请求 URL 直接引用的视图。

也就是说,<html>在包含文件中包含a 是完全错误的。您以这种方式有效地嵌套<html>标签,这只会导致语法上无效的 HTML。暂停 JSF 并先学习一些基本的 HTML可能是值得的。JSF 最终只是一个 HTML 代码生成器。