JSF标签不被呈现为HTML

我遵循使用NetbeansGlassfishJava EE firstcup教程。

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

例如,对于这个代码:

<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或玻璃鱼的configuration问题,但不知道是什么。 有任何想法吗?


这是我的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> 

此外:

  • 我在浏览器中input的url是http:// localhost:8081 / firstcup /但我也尝试过: http:// localhost:8081 / firstcup / greetings.xhtml
  • 我检查过Glassfish日志,没有关于无法加载FacesServlet的信息

如果JSF标签没有被parsing,那么它只是意味着请求没有通过FacesServlet传递。 这个servlet是JSF所有东西的负责人。 您需要validation使用的请求URL是否与FacesServleturl-pattern匹配。 请注意,它是区分大小写的。

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

更新 :还有一件事,你是否在<html xmlns> attribtue中声明了JSF HTML taglib? 你在你的代码片段中省略了。

它应该看起来像

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

以下代码在web.xml中

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

而不是faces/*已经解决了我的非呈现jsf标签的问题。

注意: *.html会导致计算器溢出

检查你的web.xml或你的faces-config.xml。 有些东西显然缺失。

编辑:我不知道jsf 2,但在我的JSF 1 faces-config.xml我有这样的:

 <application> <view-handler>com.sun.facelets.FaceletViewHandler</view-handler> </application> 

也许你应该看看这个。 (可能是一个提示,对不起,我不能再帮助)

编辑2:这不是答案,对不起

这可能与您无关,但经过几个小时寻找类似问题的解决scheme后,我的罪魁祸首原来是WEB-INF / faces-config.xml中的这个文件:

 <?xml version="1.0"?> <faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xi="http://www.w3.org/2001/XInclude" 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_1_2.xsd"/> 

由于一些奇怪的原因,JBoss Tools 3.3.0.M2把这个文件放在我的JSF 2.0项目和BOOM中! 没有任何工作 该文件看起来很无辜(可能由于版本=“1.2”),这让我很沮丧。

我search了日志(没有!),WEB-INF / lib,类path,甚至删除依赖关系,结果是一个faces-config.xml 😛

希望这有助于某人…

我也遭受了jsf tags问题,根本没有呈现。 我使用web.xml欢迎文件作为login/entry.xhtml

当我将该文件更改为faces/login/entry.xhtml ,它运行良好。

它必须是由于facesServelet not intercepting页面。 它导致只呈现纯html,jsf标签被忽略。

谢谢@ hendy-irawan

我通过更改我的faces-config标题解决了我的问题

 <?xml version="1.0" encoding="UTF-8"?> <faces-config 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_1_2.xsd" version="1.2"> </faces-config> 

 <?xml version="1.0" encoding="UTF-8"?> <faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd" version="2.2"> </faces-config> 

已解决:将web.xml中欢迎文件更改为以下解决了问题:

 <welcome-file-list> <welcome-file>firstcup/greetings.xhtml</welcome-file> </welcome-file-list> 

我有同样的问题。 我从WEB-INF / lib中删除了一些richfaces jars,现在JSF正在工作。