问题重新渲染Richfaces 4.0中的<ui:include> </ui:include>

时间:2011-07-19 10:47:31

标签: datatable jsf-2 richfaces

我正在使用richfaces 4.0 final。我有一个页面,我使用

包含另一个facelet
<ui:include src="#{bean.selectedPage}" />

String selectedPage在按钮单击时设置。单击按钮时,页面将更改,并使用“render”属性重新呈现上述代码周围的面板。 facelet有一个数据表。例如:

<rich:dataTable>
    <f:facet name="header">
        <rich:columnGroup>
            <rich:column>
                <h:outputText value="hello" />
            </rich:column>
        </rich:columnGroup>
    </f:facet>
</rich:dataTable>

不包括此数据表的css。有人可以帮我解决这个问题吗?我已经添加了所有必需的罐子。以下是我的web.xml的片段

<context-param>
    <param-name>org.richfaces.enableControlSkinning</param-name>
    <param-value>true</param-value>
</context-param>
<context-param>
    <param-name>org.richfaces.enableControlSkinningClasses</param-name>
    <param-value>false</param-value>
</context-param>
<context-param>
    <param-name>org.richfaces.skin</param-name>
    <param-value>blueSky</param-value>
</context-param>
<servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.html</url-pattern>
</servlet-mapping>

奇怪的部分是为其他组件加载了皮肤,例如&lt; a4j:commandButton /&gt; 。问题仅出现在数据表中。

1 个答案:

答案 0 :(得分:1)

我以前遇到过这种情况。 AFAIK,richfaces按需加载组件的CSS。由于您的页面是动态加载的,因此Richfaces永远不会加载它永远不会知道的css。 (提到硬编码的页面名称,框架已经知道要渲染的组件的css,正如你在评论中提到的那样)。 我能找到的唯一解决方案是在您的父页面中包含rich:dataTable(即您将此小脸包括<ui:include>的页面)并将其样式设置为display:none。这样,框架就包含了rich:dataTable css。 我知道它不是一个完美的解决方案,但我找不到更好的解决方案!