JSF标签未被渲染

3
我正在启动一个JSF项目(这是我第一次使用JSF),但是我在标签的渲染方面遇到了问题。我正在使用Eclipse进行开发,并使用TomCat作为服务器。 我正在使用以下URL访问文件:http://localhost:8080/DeutschAkademie/login.jsp,根据我的理解,<h:form>标签应该被呈现为<form>,但实际上它仍然被呈现为<h:form>。有什么想法吗?

据我所记,为了使JSF页面由FacesServlet处理,它们应该通过web.xml中定义的模式进行访问(在您的示例中为login.faces)。 - jFrenetic
4个回答

11

两个建议:

  1. 更新Faces Servlet的URL模式。默认配置可以是*.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库放在那里。添加它们,重新编译您的项目并再次尝试。


好的,我已经更改了我的web.xml文件并将我的login.jsp重命名为login.xhtml。现在该页面显示404错误,并显示以下消息:`状态报告类型消息Servlet Faces Servlet不可用描述所请求的资源(Servlet Faces Servlet不可用)不可用。` - Dan Prince
@DanPrince请确保您的项目在WEB-INF/lib中包含JSF 2库。从您发布的图片来看,该文件夹是空的 - Luiggi Mendoza
是的,那么应该有哪些库,我从哪里获取它们? - Dan Prince
@DanPrince,你可以在这里找到Mojarra的JSF库(https://javaserverfaces.java.net/download.html),特别是JSF 2.1的库(https://javaserverfaces.java.net/nonav/2.1/download.html)。 - Luiggi Mendoza
太棒了。一切正常。谢谢 :) - Dan Prince

2
创建项目时,web.xml文件会自动生成,默认情况下该文件中的servlet-mapping如下所示:
 <servlet-mapping>
 <servlet-name>Faces Servlet</servlet-name>
 <url-pattern>/faces/*</url-pattern>
 </servlet-mapping>

希望您把所有的.xhtml文件放在一个名为faces的文件夹中。
因此,您可以在WebContent下创建名为faces的文件夹,并将您的.xhtml文件放在那里,然后调用您的应用程序http://localhost:8080/DeutschAkademie/faces/login.xhtml
或者您可以编辑您的web.xml文件,并将servlet-mapping更改为

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

然后调用您的应用程序 http://localhost:8080/DeutschAkademie/login.xhtml。这些解决方案也已在上面提到。


1
在添加了<url-pattern>*.xhtml</url-pattern>之后,请确保您的文件扩展名为.xhtml,否则将无法正常工作。

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 中打开您的文件。

不需要更改格式。它仍应该作为“login.faces”可访问。 - jFrenetic
好的,我已经完成了这两个步骤,现在该URL返回404错误。 - Dan Prince

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接