为什么我的<h:form>不可见?

时间:2015-09-09 15:41:18

标签: jsf jsf-2

我正在尝试在jsf:https://netbeans.org/kb/docs/web/jsf20-intro.html

上学习本教程

在“将管理的Bean连接到页面”一章中,您必须切换等效JSF HTML表单组件的HTML表单元素。但在我这样做之后(只是评论/取消注释已经存在的代码)它是不可见的。

我已将xmlns:h="http://xmlns.jcp.org/jsf/html"添加到html标记中;我没有从IDE中得到任何错误;表格出现在检查元素中;我也尝试了xmlns:h="http://java.sun.com/jsf/html",但仍然没有。

这是我的页面:

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://xmlns.jcp.org/jsf/html">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <link href="css/stylesheet.css" rel="stylesheet" type="text/css" />
    <!--<h:outputStylesheet name="css/stylesheet.css" />-->

    <title>Greeting</title>
</head>

<body>
    <div id="mainContainer">

        <div id="left" class="subContainer greyBox">

            <h4>Hi, my name is Duke!</h4>

            <h5>I'm thinking of a number

                <br/>
                between
                <span class="highlight">0</span> and
                <span class="highlight">10</span>.</h5>

            <h5>Can you guess it?</h5>

            <!-- <form action="response.xhtml">
                <input type="text" size="2" maxlength="2" />
                <input type="submit" value="submit" />
            </form>-->

            <h:form>
                <h:inputText id="userNumber"
                             size="2"
                             maxlength="2"
                             value="#{UserNumberBean.userNumber}"/>

                <h:commandButton id="submit" value="submit" action="response"/>
            </h:form>
        </div>

        <div id="right" class="subContainer">

            <img src="duke.png" alt="Duke waving" />
            <!--<h:graphicImage url="/duke.png" alt="Duke waving" />-->

        </div>
    </div>
</body>

的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>/faces/*</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>faces/index.xhtml</welcome-file>
        <welcome-file>index.xhtml</welcome-file>
    </welcome-file-list>
</web-app>

1 个答案:

答案 0 :(得分:2)

JSF-将<h:form><h:inputText>等标记返回给客户端(您的浏览器),而不是呈现为正确的HTML,这是您整个设置错误的明确信号。 (浏览器会正确地忽略它不理解的任何标签,这就是为什么你不能看到表格的任何内容。)

如果您正在映射您的网址格式:

<url-pattern>/faces/*</url-pattern>

然后您应该删除第二个欢迎文件条目

<welcome-file>index.xhtml</welcome-file>

因为它永远不会起作用,因为它与模式不匹配,所以整个请求不由FacesServlet处理,在这种情况下,普通.xhtml文件按原样提供!

(它甚至在您所指的教程中明确地说,在#34; 将JSF 2.x支持添加到Web应用程序&#34;部分的末尾。)