【问题标题】:JSF does not output HTML in the browserJSF 不在浏览器中输出 HTML
【发布时间】:2013-11-22 01:19:41
【问题描述】:

我在我的 netbeans 中导入了一个 jsf 项目。由于库已存储在 ./lib 文件夹中,因此我解决了所有分辨率问题。

当我运行项目时,可以看到一行标题,但在浏览器中看不到链接。当我在浏览器中查看html源代码时,是这样的。

<?xml version='1.0' encoding='UTF-8' ?>
<!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://xmlns.jcp.org/jsf/html" xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
    <h:head>
        <title>Prototype of Engine</title>
        <link rel="stylesheet" type="text/css" href="../includes/style.css" />
    </h:head>
    <h:body>
        <h1>Prototype I of Engine</h1>
        <h3><h:link outcome="auto_cleanse" value="Start Auto Cleansing"></h:link></h3>
        <h3><h:link outcome="data_transfer" value="Verify data for visit details"></h:link></h3>
        <h3><h:link outcome="itemized_bill" value="Assign revenue codes to items in itemized bill"></h:link></h3>
        <h3><h:link outcome="todo" value="TO DO List"></h:link></h3>
    </h:body>
</html>

所以唯一渲染的是

引擎原型Ⅰ

可能出了什么问题。 提前致谢。

【问题讨论】:

    标签: java jsf jakarta-ee netbeans richfaces


    【解决方案1】:

    如果您发布的是浏览器中的 HTML 源代码,那么就有问题了,因为它仍然有与之关联的 JSF 标记(例如,它仍然包含 &lt;h:link&gt; 标记)。 基本上,服务器返回 XHTML 页面,而不是 HTML 页面。 JSF Servlet 是读取 XHTML 页面并返回 HTML 页面的那个,因此您的请求很可能完全绕过了 JSF Servlet。

    如果没有正确配置 JSF,就会发生这种情况。确保在你的 web.xml 中有这个:

    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    </servlet>     
    
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>
    

    【讨论】:

    • 我有
      Faces Servletjavax.faces.webapp.FacesServlet1 Faces Servlet/faces/*
    • 我有 xhtml 视图文件。我的 web.xml 中有上述标签。当我将 url 模式更改为 *.xhtml 时,它发送相同的输出
    • 为 *.jsf 或 *.xhtml(您在请求中使用的那个)添加一个 servlet 映射。如果您使用“http://..../test.jsf”访问该页面,请添加 *.jsf 映射,如果您使用“http://..../test.xhtml”访问该页面,请添加 *.jsf 映射。 xhtml 映射。
    • 如果不设置jsf映射,调用页面为jsp页面,会报ERROR!没有部分结果。
    • 使用*.xhtml 作为servlet 映射,因此无需更改每个url 中的后缀。相关:stackoverflow.com/q/3008395/1065197
    【解决方案2】:

    您的问题是您的请求没有到达 faces servlet。所以首先你需要确保你的所有配置和编码都是正确的,以便向 servlet 发送请求。

    如果您有 jsf 页面和其他页面的混合,则使用 /faces/*.xhtml 否则,如果所有页面都是 jsf 页面,那么您也可以使用 /*。

    JSF 作为表单请求工作,因此您需要添加一个表单标签

    【讨论】:

      【解决方案3】:

      好的,我和我的同伴跟进了。相同的代码在他们的电脑上工作,但在我的电脑上却不行。我的 netbeans 是 7.1.1。我下载了最新的 7.4 Java EE 版 netbeans。它向我显示了属性-> 库中的一些错误,例如 jstl11 不在类路径中,而以前版本的 netbeans 没有显示这些错误。我取消选中它。我还从框架部分取消选中 RichFaces。现在它完美运行了。

      以上答案很有帮助,因为它们让我清楚代码不是问题所在。它与配置和库等有关。

      感谢您的尝试。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-27
        • 1970-01-01
        • 2021-07-29
        • 1970-01-01
        相关资源
        最近更新 更多