2010-06-08 104 views
7

我的服务器是GlassFish v3的,我的浏览器是火狐3.6.3和我使用的Netbeans 6.8 我的问题是,为什么在文本框没有出现在我的浏览器了。我只看到标签。JSF表没有显示出来

<?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> 
+0

如何页面加载时在浏览器中查看“查看源代码”? – 2010-06-09 07:49:11

+0

生成的html看起来与上面的代码完全一样。 – AnAmuser 2010-06-09 08:01:02

+0

向我们显示您的web.xml – Bozho 2010-06-09 09:37:39

回答

14

您需要确保该请求的URL,你在浏览器地址栏中输入( )匹配FacesServleturl-pattern。即请勿用http://example.com/context/page.xhtml打开页面,但可以用http://example.com/context/page.jsf打开。否则,将不会调用FacesServlet,并且不会以任何方式解析含有JSF组件的XHTML页面。你只看到类似<fieldset>“纯HTML”标签等的浏览器,你将看到JSF的源代码在返回的HTML源代码保持不变,当你在浏览器中做一个查看源代码

+0

好吧。现在我已经将欢迎文件更改为jsf文件,并且它可以工作。正如你大概可以猜到,我是这个网络事物的总新手。我正在尝试做一些教程,但即使这些简单的事情不会起作用,它也很令人沮丧:) – AnAmuser 2010-06-09 11:36:58

+2

这是一个正确阅读正确教程的问题。我建议你在这里开始:http://www.coreservlets.com/JSF-Tutorial/jsf2/ – BalusC 2010-06-09 11:42:41

+1

AnAmuser,如果你觉得这个答案是正确的,因为它解决了你的问题,点击答案旁边的复选框“接受 – 2010-06-10 02:43:16

0

检查,如果你在这个网页上配置的面孔,Servlet的

+0

在使用Java EE 6服务器(如Sun GlassFishTM Enterprise Server v3)时,自动为您完成映射Faces Servlet。 – AnAmuser 2010-06-09 09:08:12

+1

好的。但它是什么页面的修复后? .xhtml?你是否将它作为somthing.jsf URL并设置在WEB.xml中以将* servlet放在* .jsf上? – Dejell 2010-06-09 09:23:22

+0

这是一个xhtml文件。和web.xml文件现在在问题 – AnAmuser 2010-06-09 10:37:22

7

添加到您的web.xml:

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

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

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

如果犯规存在于提到的目录你的.xml文件,你可以通过点击你的Web应用程序项目中添加,添加新的文件,然后选择标准部署描述符(web.xml)