h-k*_*ach 2 jsf jsf-2 jboss7.x
我正在尝试在我的Windows 7机器中为Java/JSF应用程序设置环境.我正在使用从日食市场下载的Jboss AS 7的eclipse juno.我也在使用JDK 1.7.我创建了一个非常简单的应用程序,只包含啊:outputLabel标签.在部署和运行之前,一切看起来都很好,但标签不会呈现.我的意思是说我得到一个空白页面.我为JSF包含的jar是:jsf-api-2.1,jsf-impl-2.1.0-b03.jar,jsf-facelets-1.1.14.jar.和通常的公共和jstl罐子.
没有错误或任何例外.我在这里错过了什么吗?请原谅我,如果它太简单,但这只是花了太多时间.
编辑:我自动创建的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_2_0.xsd"
version="2.0">
</faces-config>
Run Code Online (Sandbox Code Playgroud)
我的网页xml:
<?xml version="1.0"?>
<web-app version="3.0" 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_3_0.xsd">
<display-name>test</display-name>
<welcome-file-list>
<welcome-file>NewFile.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>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我为JSF包含的jar是:jsf-api-2.1,jsf-impl-2.1.0-b03.jar,jsf-facelets-1.1.14.jar.和通常的公共和jstl罐子.
这里有很多错误.首先,您不需要甚至不应该包含JSF jar.这些已经是Java EE的一部分,它由JBoss AS 7实现.
其次,你绝对不需要并且绝对不应该将单独的Facelets jar与JSF 2.x结合使用.Facelets已经是JSF 2.x的一部分.
你也不应该包括JSTL jar.那个也是由Java EE/Jboss AS提供的.如果使用commons jar你的意思是Apache公共,那么这些都很好,但JSF并不需要它们.仅当您要在应用程序代码中直接使用它们时才包括它们.
如果你需要任何这些罐子(你没有,但是想一想),如果你刚开始的话,最好采取最新的罐子.从版本号看起来你看起来像是一个随机的旧版本.但同样,你不需要任何这些罐子.它们由Java EE/JBoss AS 7提供.
我自动创建的faces-config xml:
您不需要空的faces-config.xml.如果您刚刚开始,最好删除您不需要的所有内容.如果以后需要配置某些内容,您可以随时添加它.
我的网页xml:
对于JSF,您实际上不需要将映射映射FacesServlet到您使用的扩展.这些已经是默认值.如果省略整个web.xml,可以通过将.xhtml扩展名更改为.jsf或.faces来请求Facelets(.xhtml)页面.例如,如果您的页面是'NewFile.xhtml',您可以使用localhost:8080/NewFile.jsf'localhost:8080/NewFile.faces`或'localhost:8080/faces/NewFile.xhtml' 来请求它.
不幸的是,JSF 2.1没有提供唯一的(IMHO)有用的映射,对于那个,你需要在web.xml中添加一个映射条目:
<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>*.xhtml</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
因为您的欢迎页面是NewFile.xhtml,您需要这个*.xhtml映射,或者您可以完全删除映射并将welcome-file内容更改为例如NewFile.jsf.
更新:
如果欢迎页面仍未显示,则项目中必须存在您不了解自己或未向我们展示的其他内容.
尝试从一个非常简单的项目开始,看看它是否在那里工作:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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_3_0.xsd">
<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>*.xhtml</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>page.xhtml</welcome-file>
</welcome-file-list>
</web-app>
Run Code Online (Sandbox Code Playgroud)
仔细检查整个"欢迎"项目中是否有4个文件,而不是更多而不是更少.
将项目部署到JBoss AS 7.1.可以肯定的是,在Servers视图中右键单击运行时服务器,然后单击"Clean ..."启动服务器并请求localhost:8080/welcome或localhost:8080/welcome/.
我刚刚使用我概述的完全相同的步骤在本地测试了它,并且它有效.