Проблема разбора Facelets с использованием JBoss v4.2.1

У меня есть файл some.xhtml с библиотеками jsf. В теге <h:body> я пытаюсь отобразить 2 слова:

Для первого я использую обычный текст: Привет

Для второго я использую: <h:outputText value=" there"/>

Я ожидаю увидеть «Привет», но на странице напечатано только «Привет». Поэтому я предполагаю, что фейслет каким-то образом не анализируется в JBoss 4.2.1. Это работало Apache 7. Как я могу это исправить. Может надо что-то добавить в файлы web.xml или faces-config.xml?

заранее спасибо

P.S. Я открываю страницу следующим образом: http://localhost:8080/ProjectName/faces/some.xhtml< /а>

some.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets">

    <h:head>
        <title>Title that rocks</title>
    </h:head>

    <h:body>
        Hello 
        <h:outputText value=" there" />
    </h:body>
</html>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <context-param>
        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
        <param-value>.xhtml</param-value>
    </context-param>
    <listener>
        <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
    </listener>
    <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>/faces/*</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

faces-config.xml

<?xml version="1.0" encoding="UTF-8"?>

<faces-config
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
    version="1.2">

</faces-config>

person nyxz    schedule 20.09.2011    source источник
comment
Это совершенно не имеет ничего общего с JSTL. Я отредактировал ваш вопрос и теги. JSTL — это стандартная библиотека тегов JSP, это теги <c:xxx> и так далее. См. также download.oracle.com/javaee/5/jstl/1.1. /docs/tlddocs На самом деле вы имели в виду теги JSF или теги Facelets, а не Facelets JSTL.   -  person BalusC    schedule 21.09.2011


Ответы (2)


JBoss 4.2 поставляется со встроенной реализацией JSF 1.2, которая по умолчанию всегда имеет приоритет над любой реализацией JSF, которую вы включаете в свой WAR. JSF 1.2 по умолчанию не распознает Facelets как технологию просмотра и не поддерживает какие-либо специальные теги JSF 2.0, такие как <h:body>.

Чтобы сообщить JBoss, что ваш WAR уже включает в себя реализацию JSF, чтобы JBoss не использовал связанный с ним JSF 1.2 для вашего веб-приложения, вам нужно добавить следующий параметр контекста к вашему web.xml:

<context-param>
    <param-name>org.jboss.jbossfaces.WAR_BUNDLES_JSF_IMPL</param-name>
    <param-value>true</param-value>
</context-param>
person BalusC    schedule 21.09.2011

Откройте страницу с суффиксом .jsf или /faces/, который вы когда-либо определяли в web.xml.

person Ben    schedule 21.09.2011