抱歉有点蠢。但我开始明白(我的知识缺乏)如果您想在该页面上使用 RichFaces 组件,则无法转发到另一个页面。
这是我在转发到带有 RichFaces 组件的页面时遇到的一些问题
我不需要转发到带有 RichFaces 组件的页面,但如果有这个选项就好了。可能我误解了关于如何使用 RichFaces 的一些重要内容。
仅供引用,我在 NetBeans 7.0.1 中创建了一个全新的 Web 项目并制作了两个页面。通过 a4j:commandLink 我从第一页转发到具有选项卡面板的第二页。渲染变得一团糟,面板变得无法使用。除了包含 RichFaces 所需的库和标签外,新项目完全没有 web.xml 和 rich-faces.xml 中的设置参数。
当我转发到包含 RichFaces 组件的页面时,我错过了什么?
附注。如果有一个模式可以遵循,这将对如何使用 RichFaces 进行页面转发有很大帮助。
问候克里斯。
这是错误 Firebug 报告(在调用转发之后)
XML or text declaration not at start of entity
http://localhost:8080/humis/faces/app_user/projectHome.xhtml
Line 7
Firebug 报告页面的这些状态
它位于标题和包含的 20-30 个脚本中。不知道如何在此处包含长 html 列表。请求它自己接缝好了,但是 RichFaces 生成了一些我可以在转发到页面时控制的东西。
masterLayout 文件;
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<h:outputStylesheet name="css/default.css"/>
<h:outputStylesheet name="css/cssLayout.css"/>
<title>
<h:outputText value="Partner Tapestry - " /> <ui:insert name="title">Browser Title</ui:insert>
</title>
</h:head>
<h:body>
<div id="top" >
<ui:insert name="top">Top Default</ui:insert>
</div>
<div id="messages">
<rich:messages id="messagePanel" ajaxRendered="true"/>
</div>
<div id="content">
<ui:insert name="content">Content Default</ui:insert>
</div>
</h:body>
使用模板文件
<ui:composition template="/resources/masterLayout.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:rich="http://richfaces.org/rich"
xmlns:a4j="http://richfaces.org/a4j">
<ui:define name="title">
<h:outputText value="#{bundle.EditActivityTitle}"></h:outputText>
</ui:define>
<ui:define name="top">
<ui:include src="#{userController.roleMenuPath}"/>
</ui:define>
<ui:define name="content">
<rich:panel header="Edit Activity" styleClass="center_content">
<h:form id="activity_edit_form">
...
</h:form>
</rich:panel>
</ui:define>
</ui:composition>
我在用:
最佳答案
此错误表明您在生成的 HTML 输出的错误位置有悬空的 <?xml ... ?>
声明。这是无效的,文档顶部应该有一个,或者最好根本没有(否则 MSIE 可能会造成严重破坏)。检查您的 Facelets 包括模板和标记文件,并确保它们都包含在 <ui:composition>
中。
因此,虚构的 include.xhtml
必须如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<ui:composition
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">
<h2>Include page</h2>
<p>Include page blah blah lorem ipsum</p>
</ui:composition>
因此 不是 这个:<ui:composition
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">
<?xml version="1.0" encoding="UTF-8"?>
<h2>Include page</h2>
<p>Include page blah blah lorem ipsum</p>
</ui:composition>
甚至<?xml version="1.0" encoding="UTF-8"?>
<x:anotherComponent
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">
<h2>Include page</h2>
<p>Include page blah blah lorem ipsum</p>
</x:anotherComponent>
顺便说一下,Facelets 完全省略 XML 声明是完全正确的。也可以看看:
关于XML 或文本声明不在实体的开头,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7244051/