2013-12-15 6 views
1

Кто-нибудь знает, почему моя страница xhtml не работает с ее именем bean?Как сделать работу страницы xhtml с JSF?

Я получаю Welcome #{indexBean.userName} в браузере. IndexBean - @Named, @SessionScoped и реализует Serializable.

index.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html lang="en" 
    xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core"> 

<h:head> 
    <h:outputStylesheet library="css" name="default.css"/> 
    <title>Admin Panel</title> 
</h:head> 

<h:body> 
<h:form> 
    <h2>Welcome #{indexBean.userName}</h2> 
</h:form> 
</h:body> 

</html> 

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<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_3_0.xsd" 
     id="WebApp_ID" 
     version="3.0"> 

<display-name>WebAdmin</display-name> 

<context-param> 
    <param-name>javax.faces.PROJECT_STAGE</param-name> 
    <param-value>Development</param-value> 
</context-param> 

<servlet> 
    <servlet-name>FacesServlet</servlet-name> 
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>FacesServlet</servlet-name> 
    <url-pattern>/faces/*</url-pattern> 
</servlet-mapping> 

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

</web-app> 

Bean

import java.io.Serializable; 
import javax.enterprise.context.SessionScoped; 
import javax.inject.Named; 

@Named 
@SessionScoped 
public class IndexBean implements Serializable { 
private static final long serialVersionUID = 1L; 

MyFaces

INFO: Reading config : jar:file:/C:/tomee16/lib/openwebbeans-el22-1.2.1.jar!/META-INF/faces-config.xml 

дек 15, 2013 10:27:54 PM org.apache.myfaces.config.DefaultFacesConfigurationProvider getClassloaderFacesConfig INFO: Чтение конфигурации: фляги: файл:/C:/tomee16/Библиотека/openwebbeans- jsf-1.2.1.jar! /META-INF/faces-config.xml 15 декабря 2013 г. 10:27:54 org.apache.myfaces.config.LogMetaInfUtils logArtifact INFO: Артефакт 'myfaces-api' был найден в версии «2.1.13» из файла пути:/C: /tomee16/lib/myfaces-api-2.1.13.jar ' 15 декабря 2013 г. 10:27:54 org.apache.myfaces.config.LogMetaInfUtils logArtifact INFO: Артефакт «myfaces-impl» был найден в версии «2.1.13» из файла пути:/C:/tomee16/lib/myface s-impl-2.1.13.jar '

+0

Попробуйте '@Named ("indexBean") @ManagedBean @ SesionScoped' –

+0

Какой адрес вы просить, какую версию JSF бежит и где управляемый компонент (включая импорт)? – kolossus

+0

Запустить как - Запустить на сервере дает мне это: http: // localhost: 8080/WebAdmin/ – jacekn

ответ

3

Файлы XHTML рассматриваются только как виды JSF, если вы обращаетесь к ним через FacesServlet. Ваш FacesServlet отображается:

<url-pattern>/faces/*</url-pattern> 

Так для файла foo/bar.xhtml ваш будет иметь к нему доступ через URL http://host/app/faces/foo/bar.xhtml.

Рассмотрим изменение отображения на:

<url-pattern>*.xhtml</url-pattern> 

Предполагает все XHTML-файлы в приложении, являются JSF просмотров.

+0

Из примера, который я пытаюсь выполнить, я бы предпочел использовать/faces/* mapping. – jacekn

+0

Я попробовал сопоставление, которое вы предложили, и оно работает. Можете ли вы получить работу/лица/картографирование?Я не думаю, что файл xhtml всегда известен. Я планирую иметь свои горячие точки как/лица /. – jacekn

+0

jacekn, я считаю, что вы точно не поняли точку отображения (не говоря уже о том, как работают сервлеты). Просто сохраните его '* .xhtml'. – BalusC

0

Сначала проверьте пакет для аннотаций: javax.inject.Named и javax.enterprise.context.SessionScoped. Второй Если вы используете JEE 6 и потому что используете CDI, вам нужно активировать CDI, добавляющий файл WEB-INF/beans.xml, этот файл может быть пустым.

0

Возможно, вы вызываете свою страницу без обращения к FacesServlet.

Вы должны включить/лица/до вашей страницы имени URL

localhost:8080/WebAdmin/faces/index.xhtml 
Смежные вопросы