抱歉有点蠢。但我开始明白(我的知识缺乏)如果您想在该页面上使用 RichFaces 组件,则无法转发到另一个页面。

这是我在转发到带有 RichFaces 组件的页面时遇到的一些问题

  • 如果我转发到带有表单的页面,则包含的数百个 JavaScrip 中的一些被解释为格式错误的 XML 标记。
  • 如果我使用嵌套表,这些表会丢失 CSS 文件并且看起来像普通的 JSF 2.0 数据表。
  • 当被转发到只有一个 tabPanel 的页面时,就像在演示 TabPanel - Show Case 中一样,选项卡面板会变得困惑并且变得不可用(见下图)。

  • 我不需要转发到带有 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 报告页面的这些状态
  • 200 OK
  • 304 未修改

  • 它位于标题和包含的 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>
    

    我在用:
  • RichFaces 4.0-final
  • 玻璃鱼 3.1.1
  • 我不使用 maven 和 artefact 库
  • 最佳答案


    此错误表明您在生成的 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 声明是完全正确的。
    也可以看看:
  • How to include another XHTML in XHTML using JSF 2.0 Facelets?
  • 关于XML 或文本声明不在实体的开头,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7244051/

    10-11 03:47