2012-08-03 87 views
1

使用Netbeans在Glassfish 3.1.2.2上部署web应用程序,并且我的h个标签都不会在Web上显示。例如:JSF h标签不显示

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html"> 
    <head> 
     <title>Draft Savvy Beers</title> 
    </head> 
    <h:form> 
     <h:body> 
      <h1>Search for beers</h1> 
      <p><strong>Would you like to search for a beer?</strong> 
       <h:inputText value="#{draftSavvyController.searchTerm}" /> 
       <h:commandButton value="#{draftSavvyController.searchforBeers}" /></p> 
     </h:body> 
    </h:form> 
</html> 

只显示文本,没有输入栏或按钮。使用普通的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> 
    <context-param> 
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name> 
    <param-value>.xhtml</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> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <welcome-file-list> 
     <welcome-file>login.xhtml</welcome-file> 
    </welcome-file-list> 
</web-app> 

让我知道,如果我可以提供任何信息。我很新的这...

+0

我希望你在CLASSPATH中添加正确的jsf相关库? – HashimR 2012-08-03 04:03:05

+0

@HashimR我在项目中添加了JSF 2.1 jar(api和impl)。我是否也需要将它们添加到我的CLASSPATH环境变量中? – airowe 2012-08-03 04:05:03

+0

不,它的好!... – HashimR 2012-08-03 04:05:52

回答

7

添加到您的web.xml

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

我认为这个问题的原因是该请求不被通过FacesServlet通过。

页面URL与FacesServlet的url模式不匹配,因此它没有任何机会解析标签。

+0

我现在得到一个错误。堆栈跟踪很长,但这是错误:“在托管bean draftSavvyController上执行资源注入时发生错误” – airowe 2012-08-03 04:21:06

+0

将您的faces-config.xml粘贴到您的问题中。 – HashimR 2012-08-03 04:22:30

+0

我拿出了* xhtml url-pattern元素,而且我没有再收到资源注入错误。仍然没有得到我的H标签显示,虽然... – airowe 2012-08-03 04:24:59