我有一个包含在另一个视图中的视图。我在包含的视图中遇到了 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)
该<f:metadata>
不能声明中包含文件。它必须在顶视图(您指示为“父视图”的文件)中声明。它应该正是请求 URL 直接引用的视图。
也就是说,<html>
在包含文件中包含a 是完全错误的。您以这种方式有效地嵌套<html>
标签,这只会导致语法上无效的 HTML。暂停 JSF 并先学习一些基本的 HTML可能是值得的。JSF 最终只是一个 HTML 代码生成器。