powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF Faces Servlet mapping
3 сообщений из 3, страница 1 из 1
JSF Faces Servlet mapping
    #33371592
yelena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пытаюсь запустить без ошибок простейшее JSF-приложение.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<%@ page contentType="text/html; charset=windows-1251" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<html>
<body>
<f:view>
  <h:outputText value="Hello World!" />
</f:view>
</body>
</html>

web.xml:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
  <display-name>hello</display-name>
  <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>
</web-app>

В браузере JBuilder'а появляется результат с URL: http://localhost:8080/hello/faces/index.jsp

Но про этом вылетают ошибки:

StandardWrapperValve[debugjsp]: Servlet.service() for servlet debugjsp threw exception
javax.servlet.jsp.JspException: Cannot find FacesContext
javax.servlet.jsp.JspException: Cannot find FacesContext
at javax.faces.webapp.UIComponentTag.doStartTag(UIComponentTag.java:399)
at com.sun.faces.taglib.jsf_core.ViewTag.doStartTag(ViewTag.java:105)
at org.apache.jsp.index_jsp._jspx_meth_f_view_0(index_jsp.java:85)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:60)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)

и т.п. несколько раз.

Никакого каталога faces у меня в проекте нет.

Да и мне хотелось бы перенаправлять сервлету Faces Servlet запросы на jsp-шки, находящиеся в корне проекта или в других каталогах. На каталоге faces свет клином не сошелся.

Если я меняю mapping на

Код: plaintext
1.
2.
3.
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsp</url-pattern>
  </servlet-mapping>

то в браузере JBuilder'а страница при запуске приложения не появляется, а при обращении к http://localhost:8080/hello/index.jsp ничего внятного не происходит и ошибки не появляются.

Причем если сделать mapping

Код: plaintext
1.
2.
3.
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/hello/*</url-pattern>
  </servlet-mapping>

то получаем http://localhost:8080/hello/hello/index.jsp и
URL: Unable to open location: Connection refused: connect

Хотя с несуществующим каталогом faces такой фокус проходил.

Вопросы:

1) Объясните мне, пожалуйста, что происходит, как избежать ошибок в первом случае и как правильно сделать mapping в другой каталог (кроме faces).
2) Где можно почитать про возможные ошибки, чтобы не задавать вопросов?
...
Рейтинг: 0 / 0
JSF Faces Servlet mapping
    #33977631
таже х..ня!!!
...
Рейтинг: 0 / 0
JSF Faces Servlet mapping
    #33978820
yray
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
</servlet-mapping>

/faces/* - это не маппинг на каталого faces. Тег <url-pattern> указывает web-контейнеру пересылать все запросы заканчивающиеся на /faces/* (звездочка обозначает дополнительный путь или файл) сервлету Faces Servlet.

Например под этот шаблон попадают следующие URLы:
http://www.mydomain.com/mywebapp/faces/index.jsp
http://www.mydomain.com/mywebapp/faces/greeting.jsp

Необязательно делать маппинг как /faces/*
Можно и так:
Код: plaintext
1.
2.
3.
4.
servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
</servlet-mapping>
И тогда страницу, содержащую JSF - теги, нужно будет вызывать в браузере, например так: http://localhost:8080/myapp/hello.jsf

Если приложение состоит только из одной страницы index.jsp, содержащей jsf-теги, необходимо добавить в web.xml:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<!-- Для случая, если маппинг на /faces/* -->
<welcome-file-list>
    <welcome-file>faces/index.jsp</welcome-file>
</welcome-file-list>

<!-- Для случая, если маппинг на *.jsf -->
<welcome-file-list>
    <welcome-file>index.jsf</welcome-file>
</welcome-file-list>

Вот пара ссылок для начинающих:

http://jsf.iatp.org.ua/ru
http://slonopotamus.org/jsf-ru
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF Faces Servlet mapping
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]