Новичку в JSF нужна помощь в создании динамического контента - PullRequest
1 голос
/ 28 декабря 2010

HI

Я новичок в JSF и пытаюсь использовать примеры из книги "Начало JSF 2API и JBoss Seam" Кента Ка Лок Тонга. Я следовал всем инструкциям, но когда я запускаю проект из Eclipse, динамическое содержимое не отображается. запуск его из IE или Mozilla Firefox дает тот же результат (отображается статический контент, но не динамический) Я использую Eclipse Galelio 3.5.2 и JBoss 5.0.0.CR2

Ниже приведены файлы, которые я создал:

web.xml:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>hello11</display-name>
  <servlet>
    <servlet-name>JSF</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>JSF</servlet-name>
    <url-pattern>/faces/*</url-pattern>
  </servlet-mapping>
</web-app>

лица-config.xml:

    <?xml version="1.0" encoding="ISO-8859-1" ?>
<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_2_0.xsd"
    version="2.0">
</faces-config>

hello11.xhtml:

    <?xml version="1.0" encoding="ISO-8859-1" ?>
<!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">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Insert title here</title>
</head>

<body>

Hello static.

<br/>

Hello <h:outputText value="John"></h:outputText>

</body>

web.xml иface-config.xml находятся в / WEB-INF, а hello11.xhtml - в / WebContent

Мне интересно, что-то не хватает в конфигурации ...

Спасибо.

Ответы [ 2 ]

2 голосов
/ 28 декабря 2010

Какой URL-адрес запроса вы используете для доступа к этой странице?

Поскольку вы используете сопоставление префиксов, вы должны включить это в свой запрос. Э.Г.

http://localhost:8080/faces/hello11.xhtml

Тогда следующая проблема заключается в том, что вы можете подумать, что используете Facelets и JSF 2.0, но JBoss 5.0.0.CR2 не имеет встроенной поддержки для этого. По умолчанию он поставляется только с JSF 1.2 и JSP.

Если вы хотите JSF 2.0 на JBoss AS 5, вам необходимо установить и настроить его явно. Вы сделали это?

Если вы этого не сделали, то на данный момент вы можете использовать вместо этого JSP (переименуйте ваш файл в .jsp и используйте jsp: root. Вам также необходимо использовать f: view в этом случае:

<jsp:root version="2.0"
    xmlns:x="http://www.w3.org/1999/xhtml"
    xmlns:jsp="http://java.sun.com/JSP/Page"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"  
>
    <f:view>
            put JSF stuff here
    </f:view>
</jsp:root>

Наконец, почему вы используете JBoss 5.0.0.CR2? Это имеет очень мало смысла. Если вы хотите или должны использовать Java EE 5, используйте последнюю версию JBoss AS 5.1.

Всего через несколько дней будет выпущен JBoss AS 6, который будет гораздо лучшей версией для начала. А именно, он поставляется с поддержкой JSF 2.0 (и, следовательно, Facelets) из коробки. В то же время вы можете использовать JBoss AS 6 CR1.

2 голосов
/ 28 декабря 2010

Необходимо убедиться, что URL-адрес запроса (адрес в адресной строке браузера) соответствует url-pattern из FacesServlet в web.xml.Именно он отвечает за выполнение всех работ JSF.Предполагая, что вы запускаете сервер на локальном хосте через порт 8080 и что имя проекта - "детская площадка", тогда URL должен быть

http://localhost:8080/playground/faces/hello.xhtml

и, следовательно, не

http://localhost:8080/playground/hello.xhtml

Кроме того, вы также можете изменить url-pattern на *.xhtml, чтобы вам не нужно было это делать.Единственным недостатком было бы то, что вы не можете открыть "простой ванильный" XHTML-файл без этого FacesServlet. Но я не думаю, что вам это когда-нибудь понадобится.


Обновление : Как упоминает Арджан, JSF 2.0 требует минимум контейнера Servlet 2.5, но JBoss 5.0.0 CR2 - это контейнер Servlet 2.4.У вас есть 2 варианта: перейти на JSF 1.2 или обновить контейнер сервлетов до Servlet 2.5-совместимого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...