JSF 标签未呈现为 HTML

标签 jsf netbeans jakarta-ee glassfish

这个问题在这里已经有了答案:





JSF returns blank/unparsed page with plain/raw XHTML/XML/EL source instead of rendered HTML output

(1 个回答)


5年前关闭。




我正在关注 Java EE 第一杯 使用教程 网 bean Glassfish .

当我执行 JSF Web 层时,我被指示进行编码,浏览器会获得在 .xhtml 文件中编码的相同 JSF 标记,并且标记不会呈现为 HTML 标记。我通过使用浏览器中的 View 源代码知道这一点。

例如,对于此代码:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html">
    <h:head>
        <title>Page title here</title>
    </h:head>
    <h:body>
        <h2>
            <h:outputText value="#{bundle.WelcomeMessage}" />
        </h2>
    </h:body>
</html>

浏览器应该是这样的:
<html ...>
    <head>
        <title>Page title here</title>
    </head>
    <body>
        <h2>
            the welcome message goes here
        </h2>
    </body>
</html>

对?

好吧,我的浏览器正在获取 jsf 代码(上面的第一段代码)而不是 html 代码(上面的第二段代码)。

这似乎是 netbeans 或 glassfish 中的配置问题,但不知道是什么。有任何想法吗?

这是我的 web.xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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-app_3_0.xsd">
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <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>/firstcup/*</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>greetings.xhtml</welcome-file>
    </welcome-file-list>
</web-app>

这是我的 faces-config.xml 文件:
<?xml version='1.0' encoding='UTF-8'?>

<!-- =========== FULL CONFIGURATION FILE ================================== -->

<faces-config version="2.0"
              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">

    <application>
        <resource-bundle>
            <base-name>firstcup.web.WebMessages</base-name>
            <var>bundle</var>
        </resource-bundle>
        <locale-config>
            <default-locale>en</default-locale>
            <supported-locale>es</supported-locale>
        </locale-config>
    </application>
    <navigation-rule>
        <from-view-id>/greetings.xhtml</from-view-id>
        <navigation-case>
            <from-outcome>success</from-outcome>
            <to-view-id>/response.xhtml</to-view-id>
        </navigation-case>
    </navigation-rule>
</faces-config>

而且:
  • 我在浏览器中输入的网址是 http://localhost:8081/firstcup/但我也试过:http://localhost:8081/firstcup/greetings.xhtml
  • 我检查了 Glassfish 日志,但没有关于无法加载 FacesServlet 的信息
  • 最佳答案

    如果未解析 JSF 标签,则仅表示该请求尚未通过 FacesServlet 传递。 .该 servlet 负责所有 JSF 内容。您需要验证使用的请求 URL 是否与 url-pattern 匹配的FacesServlet .请注意,它区分大小写。

    但是,如果您直接在 IDE 的内置浏览器中打开文件,也可能会发生这种情况。你不应该那样做。您需要在内置浏览器或外部浏览器(例如 MSIE/Firefox)的地址栏中自行指定正确的 URL。

    更新 : 还有一件事,你是否在 <html xmlns> 中声明了 JSF HTML 标签库?属性?您在代码片段中省略了这一点。

    它应该看起来像

    <html 
        xmlns="http://www.w3.org/1999/xhtml"
        xmlns:h="http://java.sun.com/jsf/html">
    

    关于JSF 标签未呈现为 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2207616/

    相关文章:

    jquery - 单击命令按钮时可选择显示模式

    mysql - 在 Tomcat 上运行的 Java Web 应用程序无法使用数据库连接池执行 SQL 查询

    java - 如何基于用户代理等在 Spring MVC 中从数据库加载主题

    java - 如何将托管 bean 注入(inject) FacesContext?

    jsf - 在字符串值中评估 EL 表达式

    jsf - :outputText does not break\r\n characters into new lines

    java - netbeans 有类似 Eclipse 调试显示 View 的东西吗

    java - 如何使用 Netbeans 在 Java 中创建可执行文件

    java - Netbeans GlassFish Server 4,部署,连接被拒绝 : connect, false ,模块尚未部署。有关详细信息,请参阅服务器日志

    javax.naming.NamingException : JBAS011843: Failed instantiate InitialContextFactory org. jnp.interfaces.NamingContextFactory 来自类加载器