JSF facelet应用程序无法在jboss AS 7中运行

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)

提前致谢.

Arj*_*jms 5

我为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.

更新:

如果欢迎页面仍未显示,则项目中必须存在您不了解自己或未向我们展示的其他内容.

尝试从一个非常简单的项目开始,看看它是否在那里工作:

  1. 在Eclipse中,创建一个新的Dynamic Web Project
  2. 使用项目名称:welcome和Target runtime:JBoss 7.1 Runtime
  3. 删除WebContent/META-INF和WebContent/WEB-INF/lib
  4. 将3个文件从http://arjan-tijms.omnifaces.org/2011/08/minimal-3-tier-java-ee-app-without-any.html复制到您的项目中.之后,您的工作区应该与图片中的工作区完全相同.
  5. 使用以下内容添加WebContent/WEB-INF/web.xml:
<?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/welcomelocalhost:8080/welcome/.

我刚刚使用我概述的完全相同的步骤在本地测试了它,并且它有效.