JSF的新手需要帮助生成动态内容

时间:2010-12-27 22:30:05

标签: eclipse jsf jsf-2

HI,

我是JSF的新手,我正在尝试使用kent Ka lok Tong撰写的“开始JSF 2API和JBoss Seam”一书中的例子。我遵循了所有说明但是当我从Eclipse运行项目时,不显示动态内容。从IE或Mozilla Firefox运行它会得到相同的结果(显示静态内容但不显示动态) 我正在使用Eclipse Galelio 3.5.2和JBoss 5.0.0.CR2

以下是我创建的文件:

的web.xml:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<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" id="WebApp_ID" version="2.5">
  <display-name>hello11</display-name>
  <servlet>
    <servlet-name>JSF</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>JSF</servlet-name>
    <url-pattern>/faces/*</url-pattern>
  </servlet-mapping>
</web-app>

面-config.xml中:

    <?xml version="1.0" encoding="ISO-8859-1" ?>
<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>

hello11​​.xhtml:

    <?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:h="http://java.sun.com/jsf/html">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Insert title here</title>
</head>

<body>

Hello static.

<br/>

Hello <h:outputText value="John"></h:outputText>

</body>

web.xml和faces-config.xml位于/ WEB-INF下,hello11​​.xhtml位于/ WebContent下

我想知道我是否遗漏了配置中的某些内容......

感谢。

2 个答案:

答案 0 :(得分:2)

您需要确保请求网址(浏览器地址栏中的网址)与url-patternFacesServlet的{​​{1}}相匹配。它就是负责完成所有JSF工作的人。假设您在端口8080上的localhost上运行服务器并且项目名称是“playground”,那么URL应为

http://localhost:8080/playground/faces/hello.xhtml

因而

http://localhost:8080/playground/hello.xhtml

或者,您也可以将web.xml更改为url-pattern,这样您就不需要这样做了。唯一的缺点是你不能打开一个“普通的香草”XHTML文件,而*.xhtml没有。{但我认为你不会需要它。


更新:正如Arjan所提到的,JSF 2.0需要最少的Servlet 2.5容器,但JBoss 5.0.0 CR2是一个Servlet 2.4容器。您有两个选择:降级到JSF 1.2或将servletcontainer升级到Servlet 2.5兼容的。

答案 1 :(得分:2)

您用于访问此页面的请求网址是什么?

由于您使用的是前缀映射,因此应在请求中包含该映射。 E.g。

http://localhost:8080/faces/hello11.xhtml

接下来的问题是你可能认为你正在使用Facelets和JSF 2.0,但是JBoss 5.0.0.CR2不支持这种开箱即用的功能。默认情况下,它仅附带JSF 1.2和JSP。

如果你想在JBoss AS 5上使用JSF 2.0,你需要明确地安装和配置它。你做过这个吗?

如果还没有,那么暂时可以使用JSP(将文件重命名为.jsp并使用jsp:root。在这种情况下你还需要使用f:view:

<jsp:root version="2.0"
    xmlns:x="http://www.w3.org/1999/xhtml"
    xmlns:jsp="http://java.sun.com/JSP/Page"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"  
>
    <f:view>
            put JSF stuff here
    </f:view>
</jsp:root>

最后,为什么要使用JBoss 5.0.0.CR2?这没什么意义。如果您想要或需要使用Java EE 5,请使用最新发布的JBoss AS 5.1版本。

仅仅几天就会发布JBoss AS 6,这是一个更好的版本。也就是说,这个开放的JSF 2.0(以及Facelets)支持开箱即用。您可以同时使用JBoss AS 6 CR1。