【问题标题】:JSF Form is not showing up [duplicate]JSF 表单未显示[重复]
【发布时间】:2011-03-01 10:20:48
【问题描述】:

我的服务器是 glassfish v3,我的浏览器是 firefox 3.6.3,我使用的是 Netbeans 6.8 我的问题是为什么我的浏览器中没有显示文本字段。我只看到标签。

<?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://java.sun.com/jsf/html"
              xmlns:f="http://java.sun.com/jsf/core">
            <h:head>
                <title>Lookup</title>
            </h:head>
            <h:body>
                <fieldset>
                <legend>Enter Your Customer ID</legend>
                <p>Legal ids are id001, id002, and id003.</p>
                <f:view>
                <h:form>
                    Customer ID:
                    <h:inputText value="#{bankForm.customerId}" />
                    <h:commandButton value="Show Current Balance"
                                     action="#{bankForm.findBalance}" />
                </h:form>
                </f:view>
                </fieldset>
            </h:body>
    </html>

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>*.jsf</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>pages/customer-lookup</welcome-file>
    </welcome-file-list>
</web-app>

【问题讨论】:

  • 页面加载后“查看源代码”在浏览器中的显示效果如何?
  • 生成的 html 看起来和上面的代码完全一样。

标签: jsf jsf-2


【解决方案1】:

您需要确保请求 URL(当您在浏览器地址栏中输入时)与 FacesServleturl-pattern 匹配。 IE。不要用http://example.com/context/page.xhtml打开页面,而是用http://example.com/context/page.jsf打开它。否则,FacesServlet 将不会被调用,并且您的带有 JSF 组件的 XHTML 页面将不会以任何方式被解析。您只会在浏览器中看到像&lt;fieldset&gt; 之类的“纯 HTML”标签,当您在浏览器中执行 View Source 时,您将在返回的 HTML 源中看到 JSF 源代码没有改变。

【讨论】:

  • 好的。现在我已将欢迎文件更改为 jsf 文件,并且可以正常工作。您可能会猜到我是这个网络事物的新手。我正在尝试做一些教程,但是当这些简单的事情都不起作用时,这令人沮丧:)
  • 问题在于以正确的方式阅读正确的教程。我建议你在这里开球:coreservlets.com/JSF-Tutorial/jsf2
  • AnAmuser,如果您认为这个答案是正确的,因为它解决了您的问题,请单击答案旁边的复选框以“接受”它
【解决方案2】:

将此添加到您的 web.xml 中:

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

【讨论】:

    【解决方案3】:

    您遇到的问题可能在您的 Web 应用程序项目的 WEB-INF 目录中存储的 web.xml 文件中得到解决。您需要打开该文件并添加以下 xml 内容才能使您的页面正常运行。

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

    如果您的 .xml 文件在上述目录中不存在,您可以通过单击您的 Web 应用程序项目来添加它,添加新文件,然后选择标准部署描述符 (web.xml)

    【讨论】:

      【解决方案4】:

      检查您是否在此页面上配置了 Faces-Servlet

      【讨论】:

      • 在使用 Java EE 6 服务器(例如 Sun GlassFishTM Enterprise Server v3)时,会自动为您映射 Faces Servlet。
      • 好的。但它是什么页面的后期修复? .xhtml?您是否将其 URL 为 somthing.jsf 并在 WEB.xml 中设置以将 servlet 映射到 *.jsf 上?
      • 这是一个 xhtml 文件。并且 web.xml 文件现在在问题中
      猜你喜欢
      • 1970-01-01
      • 2021-06-26
      • 1970-01-01
      • 1970-01-01
      • 2013-12-20
      • 2014-07-27
      • 2012-08-01
      • 2018-07-06
      • 1970-01-01
      相关资源
      最近更新 更多