我有以下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文件,这有什么不同?
答案 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?