2013-02-11 1 views
1

Я пытаюсь создать приложение JSF 2.0 в eclipse с tomcat7. Проект выполняется успешно, но jsf html и основные компоненты не отображаются в браузере. Я думаю, что Faces Servlet я настроил в web.xml.Faces Servlet не разобрал .xhtml страницы в jsf 2. running on tomcat 7

Ниже приводится файл web.xml -

<welcome-file-list> 
<welcome-file>faces/index.xhtml</welcome-file>  
</welcome-file-list> 

<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> 

<context-param> 
    <description>State saving method: 'client' or 'server' (=default)</description> 
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name> 
    <param-value>client</param-value> 
</context-param> 
<context-param> 
    <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name> 
    <param-value>resources.application</param-value> 
</context-param> 
<listener> 
    <listener-class>com.sun.faces.config.ConfigureListener</listener-class> 
</listener> 

У меня есть страница index.xhtml вне WEB-INF. Он отображается в браузере, но компоненты jsf не отображаются в браузере. Может кто-нибудь рассказать, что происходит не так.

Я включил следующие банки в WEB-INF/Lib - 1. Викисклада annotations.jar 2. Обще-beansutil.jar 3. Обще-collection.jar 4. Обще-digester.jar 5 . Commons-logging.jar 6. JSF-api.jar (от mojra 2.0) 7. Jsf-impl.jar (от mojra 2.0) . jstl.jar 9. standard.jar

Благодаря

+0

PLS добавьте содержимое вашей индексной страницы. также мотыга вы получаете доступ к странице. Я надеюсь, что URL-адрес соответствует URL-адресу для jsf, содержащему/faces /, как указано выше в conf. – sudmong

+0

Пожалуйста, покажите нам свою страницу и URL-адрес, который вы используете для доступа к нему. – rbento

ответ

2

Попробуйте эти .. Они были указаны для моего вопроса один раз ..

  1. Вам не нужно и даже не следует включать банки JSF. Это уже часть Java EE.
  2. Во-вторых, вам определенно не нужно и абсолютно не следует использовать отдельную банку Facelets в сочетании с JSF 2.x. Facelets уже входит в состав JSF 2.x.
  3. Вы также не должны включать банку JSTL. Это тоже обеспечивается Java EE. Если у вас есть общедоступные банки от Apache, то это нормально, но они НЕ нужны для JSF. Включите их только в том случае, если вы хотите использовать их непосредственно в коде приложения.
  4. Попробуйте получить последнюю версию JSF (mojara 2.x).

Также вы можете изменить ваш web.xml, как это и попробовать:

<welcome-file-list> 
<welcome-file>index.xhtml</welcome-file>  
</welcome-file-list> 


<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>*.xhtml</url-pattern>  
</servlet-mapping>  

Когда я попытался, я извлекал добавление Jsf банки отдельно. И это сработало, отображая все теги jsf. Также убедитесь, что у вас есть все необходимые библиотеки тегов на странице Xhtml, а именно:

<html xmlns="http://www.w3.org/1999/xhtml" 
xmlns:h="http://java.sun.com/jsf/html" 
xmlns:ui="http://java.sun.com/jsf/facelets" 
xmlns:p="http://primefaces.org/ui" 
xmlns:f="http://java.sun.com/jsf/core"> 

Смотрите, если это работает.

+0

Спасибо, что работает сейчас. Я не использовал банки, предоставленные Java EE. Я использовал их, и компоненты JSF начали появляться в браузере. –

+0

@sandeepk вы имеете в виду, вы удалили банки, которые вы положили раньше для jsf? –

+0

Да, я ранее загружал банки и использовал его с Tomcat. Затем я создал образец приложения JSF в Glassfish (Netbeans). Проблема была исправлена ​​после использования этих банок. Я думаю, что это происходило, потому что изначально были неправильные банки. –

0

Пожалуйста, измените отображение сервлета, показанное в исходном вопросе к

<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.xhtml</url-pattern>  
</servlet-mapping> 

, чтобы сделать его работу, т.е. иметь свой контент (который уже счастливо обслуживаемый Tomcat) вынесенный через JSF2.

+0

См. Также http://stackoverflow.com/questions/3008395/jsf-facelets-sometimes-i-see-the-url-is-jsf-and-sometimes-xhtml-why, частично объясняя * .jsf, *. xhtml,/faces/* mysteries. – whaefelinger

0

я тоже была эта проблема, и поскольку этот вопрос является первым результатом на Google запросов о JSF не разборе Xhtml файлы, вот что я сделал, чтобы решить:

В моем случае я имел зависимость от сварного шва -servlet, версия 2.2.1, когда я удалил ее из classpath, которую JSF начал показывать.

Надеюсь, что эта помощь!

Смежные вопросы