JSF标签不被呈现为HTML
我遵循使用Netbeans和Glassfish的Java 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是否与FacesServlet
的url-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正在工作。