【问题标题】:Why does this text not appear in JSF?为什么这段文字没有出现在 JSF 中?
【发布时间】:2012-11-22 15:04:22
【问题描述】:

我有以下 HTML 文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html 
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
>

<head>
<title>First Example JSF Program</title>
<head>

<body>
   Hello <h:outputText value="Darwin"></h:outputText>!
</body>
</html>

但输出应为“Hello Darwin!”不会出现。只有“你好!”出现。为什么是这样?没有错误,我确信它包含所有必需的 JAR 文件 - 如果没有,它会抛出错误吗?

干杯

附:这是一个 HTML 5 文件,有区别吗?

【问题讨论】:

    标签: jsf


    【解决方案1】:

    如果您在浏览器地址中看到的请求 URL 与 webapp 的 web.xml 中定义的 FacesServlet&lt;url-pattern&gt; 不匹配,则可能会发生这种情况,因此 FacesServlet 无法完成其工作执行所有 JSF 工作。

    如果您在浏览器中右键单击页面并执行查看源代码,您应该已经注意到 JSF &lt;h:outputText&gt; 标记完全未处理。 Web 浏览器无法识别 JSF 标记。它们应该由网络服务器中的FacesServlet 处理。它们应该生成正确的 HTML 代码,最终的 HTML 结果不应该包含任何 JSF 标记。

    您需要确保您在浏览器地址中看到的请求 URL 与 webapp 的 web.xml 中定义的 FacesServlet 中的 &lt;url-pattern&gt; 匹配。想象一下,它是*.jsf,就像

    <url-pattern>*.jsf</url-pattern>
    

    那么您应该需要将地址栏中的 URL 从 /some.xhtml 更改为 /some.jsf。

    或者,您也可以直接更改web.xml 以将FacesServlet 映射到*.xhtml

    <url-pattern>*.xhtml</url-pattern>
    

    这样您就不再需要摆弄虚拟 URL。

    对于具有 HTML5 doctype 的文件,这绝对没有区别。我只会删除那个 XML 序言,因为它只对 XHTML doctype 有效。另见Is it possible to use JSF+Facelets with HTML 4/5?

    【讨论】:

    • 可以理解 - 我修复了 web.xml 文件,但现在我收到 HTTP:404 错误
    • @Katana24 检查你用来访问页面的url,可能是你使用了/faces/yourpage.xhtml,现在你只需要使用/yourpage.xhtml
    猜你喜欢
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-07
    相关资源
    最近更新 更多