Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Hello JSF


Автор: KasDmi 17.12.2009, 01:13
Всем привет! Решил освоиться в JSF, написал маленькое приложенице.

web.xml
Код

<?xml version="1.0" encoding="UTF-8"?>
<web-app 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"
         version="2.5">

    <display-name>Hello JSF</display-name>

    <context-param>
        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
        <param-value>.jspx</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>*.jsf</url-pattern>
    </servlet-mapping>
    
    <listener>
        <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
    </listener>
</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>


index.jspx
Код

<?xml version="1.0" encoding="UTF-8"?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
          xmlns:ui="http://java.sun.com/jsf/facelets"
          xmlns:f="http://java.sun.com/jsf/core"
          xmlns:h="http://java.sun.com/jsf/html">
    <f:view>
        <ui:composition>
            <ui:define name="body">
                <h:outputText value="Hello, JSF!"/>
            </ui:define>
        </ui:composition>
    </f:view>
</jsp:root>
]

Диплою приложение с помощью идеи в томкат 6, в браузере ввожу http://localhost:8080/hello/index.jsf и в итоге открывается страничка, на которой написано:

Ошибка синтаксического анализа XML: префикс не связан c пространством имён
Адрес: http://localhost:8080/hello/index.jsf
Строка 1, символ 1:<ui:composition><ui:define name="body">Hello, JSF!</ui:define></ui:composition>
^

Подскажите пожалуйста в чём проблема. Ничего подобного не могу найти. Использую ubuntu 9.10, tomcat 6.0.20. Заранее спасибо!

Автор: Vasay 17.12.2009, 01:21
KasDmi, 

Вроде, Tomcat 6 без дополнительных либ Jsf не поддерживает. 

http://izenfire.blogspot.com/2009/01/jsf-tomcat.html

Автор: KasDmi 17.12.2009, 01:35
Vasay, эти либы у меня диплоются вместе с приложением. Если их перекинуть в CATALINA_HOME/lib, то ничего не меняется - в браузере отображается таже ошибка.

Автор: Vasay 17.12.2009, 02:33
KasDmi, 

Цитата

Ошибка синтаксического анализа XML: префикс не связан c пространством имён
Адрес: http://localhost:8080/hello/index.jsf
Строка 1, символ 1:<ui:composition><ui:define name="body">Hello, JSF!</ui:define></ui:composition>


Ругается на теги facelets

Либы facelets подключены?

в  faces-config.xml, вроде, должен быть facelets упомянут:
Код

<application>
<view-handler>
com.sun.facelets.FaceletViewHandler
</view-handler>
</application> 

Автор: KasDmi 17.12.2009, 11:58
Vasay, добавил хендлер в faces-config как ты написал, ошибка исчезла. Теперь отображается чистая страница. Если закоментить все ui теги, то на страничке появляется "Hello, JSF!" Не хватает какой-то библиотеки.
У меня сейчас подключены: jsf-api.jar, jsf-facelets.jar, jsf-impl.jar, jstl.jar

Автор: KasDmi 17.12.2009, 18:40
Цитата(KasDmi @ 17.12.2009,  11:58)
Если закоментить все ui теги, то на страничке появляется "Hello, JSF!"

Прочитал, разобрался! smile Теги ui используются вместе с шаблоном, если шаблона нет, то можно без них.
Vasay, спасибо за помощь! smile 

Автор: KasDmi 18.12.2009, 18:12
Появился еще небольшой вопросик. Вот, например, у меня в WEB-INF лежит index.jsp, там же лежит папка pages в которой лежат страницы jspx. Я запускаю приложение и попадаю на index.jsp, от туда редиректом перехожу на страницу /pages/main.jspx (главная страница), урл у меня в данный момент http://localhost:8080/hello/. Потом я перехожу при нажатии кнопки на какую-то другую страницу, допустим /pages/second.jspx и урл у меня получается уже таким http://localhost:8080/hello/pages/second.jsf. И вот собственно вопрос, как убрать выделенную часть урла (pages/)? И можно ли index.jsp использовать в качестве редиректа в папку /pages или так делать нельзя?

Автор: powerOn 18.12.2009, 21:51
Модератор: KasDmi, один топик - один вопрос.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)