Отсутствует js для таблицы дерева openfaces - PullRequest
0 голосов
/ 05 января 2012

При попытке включить RichFaces с OpenFaces в древовидную таблицу, и он не отображает какие-либо кнопки разворачивания коллапса.Оказалось, что некоторые js не загружены, что может быть причиной этого.

Код JSF выглядит следующим образом:

<o:treeTable var="o">
                        <o:dynamicTreeStructure nodeChildren="#{bean.originNodeChildren}"
                                                nodeHasChildren="#{bean.originHasChildren()}"/>
                        <o:treeColumn expandedToggleImageUrl="/img/toggle-expand-light.png"
                                      collapsedToggleImageUrl="img/toggle-collapse-light.png">
                            <h:outputText value="#{o.description}"/>
                        </o:treeColumn>
                    </o:treeTable>

Код бина запускается правильно (включая метод hasChildren).

JS исключения:

Failed to load resource: the server responded with a status of 404 (/openFacesResources/META-INF/resources/openfaces/util/ajaxUtil-2.1.EA1.1143.js)
Failed to load resource: the server responded with a status of 404 (/openFacesResources/META-INF/resources/openfaces/util/util-2.1.EA1.1143.js)
Failed to load resource: the server responded with a status of 404 (/openFacesResources/META-INF/resources/openfaces/tableUtil-2.1.EA1.1143.js)
Failed to load resource: the server responded with a status of 404 (/openFacesResources/META-INF/resources/openfaces/table/table-2.1.EA1.1143.js)
Failed to load resource: the server responded with a status of 404 (/openFacesResources/META-INF/resources/openfaces/table/treeTable-2.1.EA1.1143.js)

Использование OpenFaces версии 2.0 и RichFaces версии 3.3.3.

Ответы [ 2 ]

1 голос
/ 05 января 2012

Необходимо настроить фильтр ресурсов для открытых лиц в web.xml, и работа завершена.Что-то вроде:

public class OpenFacesResourceFilter extends ResourceFilter {
    // -- Fields --

    // -- Methods --
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        try{
            super.doFilter(servletRequest, servletResponse, filterChain);
        } catch (ServletException e) {
            Throwable parent = e.getCause();
            if(parent!=null && parent instanceof ServletException) {
                throw (ServletException) parent;
            } else {
                throw e;
            }
        }
    }
}
0 голосов
/ 13 января 2012

Похоже, вы действительно не объявили фильтр ресурсов OpenFaces в xml-файле приложения.Вот выдержка из документации о том, как фильтр может быть объявлен (обратите внимание, что вам не нужно создавать какие-либо классы Java для этого фильтра):

  <!-- FILTER FOR PROCESSING INTERNAL OPENFACES RESOURCES -->
  <filter>
    <filter-name>ResourceFilter</filter-name>
    <filter-class>org.openfaces.util.ResourceFilter</filter-class>
  </filter>

  <!-- MAPPING FOR OPENFACES RESOURCE FILTER -->
  <filter-mapping>
    <filter-name>ResourceFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

См. Раздел Установка и разделы Оптимизация фильтра ресурсов в документации OpenFaces 2.0.

...