Ошибка повторного рендеринга <ui: include /> в Richfaces 4.0 - PullRequest
0 голосов
/ 19 июля 2011

Я использую richfaces 4.0 final. У меня есть страница, где я включаю другой фейслет, используя

<ui:include src="#{bean.selectedPage}" />

Строка selectedPage устанавливается при нажатии кнопки. При нажатии кнопки страница изменяется, и панель, окружающая приведенный выше код, перерисовывается с использованием атрибута render. Фейслет имеет данные. например:

<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>

Странная часть - скин загружается для других компонентов, таких как . Проблемы появляются только для данных.

1 Ответ

1 голос
/ 20 июля 2011

Я сталкивался с этим раньше.AFAIK, richfaces загружает CSS для компонентов по требованию.Поскольку ваша страница загружается динамически, Richfaces никогда не загружает CSS, потому что он никогда не знает.(упоминая жестко закодированное имя страницы, фреймворк уже знает, какой css компонента должен отображаться, и так оно и есть, как вы упомянули в своем комментарии).Единственное решение, которое я смог найти для этого, было включить rich:dataTable на вашей родительской странице (то есть на страницу, на которой вы включаете этот лицевой слой с <ui:include>) и установить его стиль на display:none.Таким образом, фреймворк включает в себя rich:dataTable css.Я знаю, что это не идеальное решение, но я не смог найти лучшего!

...