2011-10-25 83 views
5

访问JSF欢迎文件不被识别

http://localhost:8080/basicSetup/faces/index.xhtml 

作品,与输出:

的Hello World!阿尔伯特·锦

但访问

http://localhost:8080/basicSetup 

显示

的Hello World! #{} myBean.value

意思是欢迎文件不会被渲染为JSF文件

我想http://localhost:8080/basicSetup有作为访问http://localhost:8080/basicSetup/faces/index.xhtml同样的效果。

请分享你的想法

码头 - Maven的插件:8.0.3.v20111011:运行+ JDK 7 +日食靛蓝

这里是我的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_2_5.xsd" 
    version="2.5"> 
    <display-name>Basic Setup Web Application</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> 
    <welcome-file-list> 
     <welcome-file>faces/index.xhtml</welcome-file> 
    </welcome-file-list> 
    <listener> 
     <listener-class> 
      com.sun.faces.config.ConfigureListener 
     </listener-class> 
    </listener> 
    <context-param> 
     <param-name>javax.faces.PROJECT_STAGE</param-name> 
     <param-value>Development</param-value> 
    </context-param> 
</web-app> 

这就是码头行家插件输出:

[INFO] >>> jetty-maven-plugin:8.0.3.v20111011:run (default-cli) @ BasicSetup >>> 
[INFO] 
[INFO] --- maven-resources-plugin:2.4.3:resources (default-resources) @ BasicSetup --- 
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! 
[INFO] Copying 0 resource 
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ BasicSetup --- 
[INFO] Nothing to compile - all classes are up to date 
[INFO] 
[INFO] --- maven-resources-plugin:2.4.3:testResources (default-testResources) @ BasicSetup --- 
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! 
[INFO] skip non existing resourceDirectory C:\Users\albert\workspace\BasicSetup\src\test\resources 
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ BasicSetup --- 
[INFO] No sources to compile 
[INFO] 
[INFO] <<< jetty-maven-plugin:8.0.3.v20111011:run (default-cli) @ BasicSetup <<< 
[INFO] 
[INFO] --- jetty-maven-plugin:8.0.3.v20111011:run (default-cli) @ BasicSetup --- 
[INFO] Configuring Jetty for project: BasicSetup Maven Webapp 
[INFO] webAppSourceDirectory C:\Users\albert\workspace\BasicSetup\src\main\webapp does not exist. Defaulting to C:\Users\albert\workspace\BasicSetup\src\main\webapp 
[INFO] Reload Mechanic: automatic 
[INFO] Classes = C:\Users\albert\workspace\BasicSetup\target\classes 
[INFO] Context path = /basicSetup 
[INFO] Tmp directory = C:\Users\albert\workspace\BasicSetup\target\tmp 
[INFO] Web defaults = org/eclipse/jetty/webapp/webdefault.xml 
[INFO] Web overrides = none 
[INFO] web.xml file = file:/C:/Users/albert/workspace/BasicSetup/src/main/webapp/WEB-INF/web.xml 
[INFO] Webapp directory = C:\Users\albert\workspace\BasicSetup\src\main\webapp 
2011-10-25 14:03:59.073:INFO:oejs.Server:jetty-8.0.3.v20111011 
2011-10-25 14:03:59.333:INFO:oejpw.PlusConfiguration:No Transaction manager found - if your webapp requires one, please configure one. 
2011-10-25 14:04:00.104:INFO:oejsh.ContextHandler:started o.m.j.p.JettyWebAppContext{/basicSetup,[file:/C:/Users/albert/workspace/BasicSetup/src/main/webapp/, jar:file:/C:/Users/albert/.m2/repository/org/glassfish/javax.faces/2.1.3/javax.faces-2.1.3.jar!/META-INF/resources/]},file:/C:/Users/albert/workspace/BasicSetup/src/main/webapp/ 
2011-10-25 14:04:00.104:INFO:oejsh.ContextHandler:started o.m.j.p.JettyWebAppContext{/basicSetup,[file:/C:/Users/albert/workspace/BasicSetup/src/main/webapp/, jar:file:/C:/Users/albert/.m2/repository/org/glassfish/javax.faces/2.1.3/javax.faces-2.1.3.jar!/META-INF/resources/]},file:/C:/Users/albert/workspace/BasicSetup/src/main/webapp/ 
2011-10-25 14:04:00.104:INFO:oejsh.ContextHandler:started o.m.j.p.JettyWebAppContext{/basicSetup,[file:/C:/Users/albert/workspace/BasicSetup/src/main/webapp/, jar:file:/C:/Users/albert/.m2/repository/org/glassfish/javax.faces/2.1.3/javax.faces-2.1.3.jar!/META-INF/resources/]},file:/C:/Users/albert/workspace/BasicSetup/src/main/webapp/ 
Oct 25, 2011 2:04:00 PM com.sun.faces.config.ConfigureListener contextInitialized 
INFO: Initializing Mojarra 2.1.3 (SNAPSHOT 20110908) for context '/basicSetup' 
Oct 25, 2011 2:04:00 PM com.sun.faces.spi.InjectionProviderFactory createInstance 
INFO: JSF1048: PostConstruct/PreDestroy annotations present. ManagedBeans methods marked with these annotations will have said annotations processed. 
Oct 25, 2011 2:04:00 PM com.sun.faces.config.ConfigureListener$WebConfigResourceMonitor$Monitor <init> 
INFO: Monitoring file:/C:/Users/albert/workspace/BasicSetup/src/main/webapp/WEB-INF/faces-config.xml for modifications 
2011-10-25 14:04:00.787:INFO:oejsh.ContextHandler:started o.m.j.p.JettyWebAppContext{/basicSetup,[file:/C:/Users/albert/workspace/BasicSetup/src/main/webapp/, jar:file:/C:/Users/albert/.m2/repository/org/glassfish/javax.faces/2.1.3/javax.faces-2.1.3.jar!/META-INF/resources/]},file:/C:/Users/albert/workspace/BasicSetup/src/main/webapp/ 
2011-10-25 14:04:00.825:INFO:oejs.AbstractConnector:Started [email protected]:8080 STARTING 
[INFO] Started Jetty Server 
[INFO] Starting scanner at interval of 10 seconds. 

回答

12

<welcome-file>是SUPP提出代表文件文件的名称,默认情况下每当文件夹被请求时加载。

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

如果你使用JSF 2.x的,那么我建议由*.xhtml更换/faces/* URL模式,然后上面会工作,你不再需要在网址/faces路径摆弄。或者,如果你使用JSF 1.x的话,我建议由*.jsf更换/faces/* URL模式,文件夹中提供一个空index.jsf文件旁边index.xhtml愚弄该文件真的存在的容器。

+0

我完全同意你的想法只使用XHTML我JSF2.x.的简单起见,同意我只是对我的情况很好奇,因为在welcome-file中使用文件夹路径的例子是http://netbeans.org/kb/docs/web/jsf20-intro.html和核心jsf 2书.. – bertie

+1

嗯,你是对的,它可以在Tomcat和Glassfish上工作。我实际上从来没有使用'/ faces/*',我一直认为''应该引用磁盘上的物理文件,这也是字面说明的规范。也许这些容器自动检测与欢迎文件上的前缀映射servlet匹配?我自己也从来没有使用Jetty,但从我读到的是,它有时非常错误和疯狂。 – BalusC

+0

谢谢!为了更常见的做法,将切换到* .xhtml,并会考虑再次切换到tomcat7 – bertie