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下
我想知道我是否遗漏了配置中的某些内容......
感谢。
答案 0 :(得分:2)
您需要确保请求网址(浏览器地址栏中的网址)与url-pattern
中FacesServlet
的{{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。