2013-04-27 104 views
2

我开始一个JSF项目(这是我第一次使用JSF),我遇到了正在呈现的标签问题。我在Eclipse中开发并使用TomCat作为服务器。JSF标签没有被渲染

我正在用这个URL访问文件:http://localhost:8080/DeutschAkademie/login.jsp和 据我所知<h:form>标记应该呈现为<form>,但它改为呈现为<h:form>。有任何想法吗?

+0

据我所知,为了JSF页面被FacesServlet处理,它们应该被web.xml中定义的模式(在你的例子中是login.faces)访问。 – jFrenetic 2013-04-27 14:47:02

回答

5

两个建议:

  1. 更新网址Faces Servlet的模式。默认配置可以为*.jsp(无需使用*.faces或别的东西。不过,我会建议使用*.xhtml

  2. JSF 2作品与Facelets的,所以您不必再使用旧的JSP。读书您login.jsp页面的内容,你可以重命名从JSP扩展到XHTML,它会工作

在此基础上,该的web.xml看起来就像这样:

<web-app> 
    <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>*.xhtml</url-pattern> 
    </servlet-mapping> 
    <welcome-file-list> 
     <welcome-file>login.xhtml</welcome-file> 
    </welcome-file-list> 
</web-app> 

并有login.xhtml文件。

要访问您的页面,您只需在浏览器地址栏中输入http://localhost:8080/DeutschAkademie/login.xhtml即可。

相关:


编辑:

基于项目的画面,WEB-INF/lib目录文件夹是干净的。你应该把JSF 2库放在那里。添加它们,重新编译你的项目并再次尝试。

+0

好吧,我改变了我的web.xml文件,并将我的login.jsp重命名为login.xhtml。现在,页面显示了以下消息404: '型状态报告 消息的Servlet面临Servlet是不可 描述所请求的资源(Servlet的面孔Servlet是不可用)不available.' – 2013-04-27 15:56:53

+0

@DanPrince确保您的项目包含* WEB-INF/lib *中的JSF 2库。从您发布的图片中,此文件夹是**空**。 – 2013-04-27 15:57:43

+0

是的,哪些库应该在那里,我在哪里得到它们? – 2013-04-27 16:05:34

0

修改你的web.xml中

<web-app> 
<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> 
<url-pattern>/faces/</url-pattern> 
</servlet-mapping> 
</web-app> 

文件重命名为login.xhtml

打开您的文件在http://localhost:8080/DeutschAkademie/faces/login.xhtml

+0

不需要改变模式。它仍然应该可以作为'login.faces'访问。 – jFrenetic 2013-04-27 14:52:24

+0

好吧,我已经完成了这两个,现在它在404 URL。 – 2013-04-27 15:07:17

2

当您创建项目时,web.xml会为你生成和此文件的缺省内servlet-mapping看起来就像是:

指望它,你就会把你所有的.xhtml文件下文件夹名为faces
因此,您可以在WebContent下创建名为faces的此文件夹,并将您的.xhtml文件放在那里,然后再打电话给您的应用程序http://localhost:8080/DeutschAkademie/faces/login.xhtml
或者你可以编辑您的web.xml,改变servlet的ammping到

<servlet-mapping> 
<servlet-name>Faces Servlet</servlet-name> 
<url-pattern>*.xhtml</url-pattern> 
</servlet-mapping> 

,比打电话给你的应用程序http://localhost:8080/DeutschAkademie/login.xhtml
上面也提到了这些解决方案。

0

加入<url-pattern>*.xhtml</url-pattern>后,请确保您的文件具有扩展名.xhtml,否则不起作用。