为什么这个文本没有出现在JSF中?

时间:2012-11-22 15:04:22

标签: jsf

我有以下HTML文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 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"
>

<head>
<title>First Example JSF Program</title>
<head>

<body>
   Hello <h:outputText value="Darwin"></h:outputText>!
</body>
</html>

但输出,预计'你好达尔文!'不会出现。只有'你好!'出现。为什么是这样?没有错误,我确定它需要所有JAR文件 - 如果没有,它会抛出错误吗?

干杯

P.S。这是一个HTML 5文件,这有什么不同?

1 个答案:

答案 0 :(得分:2)

如果您在浏览器地址中看到的请求网址与web <url-pattern>中定义的FacesServlet的{​​{1}}不匹配,那么就会发生这种情况,因此web.xml能够完成所有JSF工作的工作。

如果右键单击浏览器中的页面并执行查看源,您应该注意到JSF FacesServlet标记完全未经处理。 Web浏览器无法识别JSF标记。它们应该由网络服务器中的<h:outputText>处理。它们应该生成正确的HTML代码,最终的HTML结果根本不应包含任何JSF标记。

您需要确保浏览器地址中显示的请求网址与网络应用FacesServlet中定义的<url-pattern>的{​​{1}}相符。想象一下,FacesServlet就像

一样
web.xml

然后您需要将地址栏中的URL从/some.xhtml更改为/some.jsf。

或者,您也可以更改*.jsf直接在<url-pattern>*.jsf</url-pattern> 上映射web.xml

FacesServlet

这样您就不需要再使用虚拟URL了。

对于具有HTML5 doctype的文件,没有这一点完全没有区别。我只删除那个XML prolog,因为它只适用于XHTML doctype。另请参阅Is it possible to use JSF+Facelets with HTML 4/5?