Java Facelet模板呈现两个HTML标记
我正在创建我的第一个facelets/JSF应用程序。在我的第一页中,我添加了一个facelet模板:Java Facelet模板呈现两个HTML标记,java,jsf,facelets,Java,Jsf,Facelets,我正在创建我的第一个facelets/JSF应用程序。在我的第一页中,我添加了一个facelet模板: 在此处插入标题 这是我的模板页面: 在此处插入标题 纳格罗维克 但是,当我在web浏览器中查看页面源时,我看到: 在此处插入标题 在此处插入标题 纳格罗维克 当我使用时,为什么JSF会创建一个body和其他HTML标记两次 更新后,我的代码将显示主页: 在此处插入标题 模板内容: aaaaaaaaa 这是源代码视图: 在此处插入标题 在此处插入标题 aaaaaaaaa
在此处插入标题
这是我的模板页面:
在此处插入标题
纳格罗维克
但是,当我在web浏览器中查看页面源时,我看到:
在此处插入标题
在此处插入标题
纳格罗维克
当我使用
时,为什么JSF会创建一个body和其他HTML标记两次
更新后,我的代码将显示主页:
在此处插入标题
模板内容:
aaaaaaaaa
这是源代码视图:
在此处插入标题
在此处插入标题
aaaaaaaaa
基本上,您使用模板的方式是错误的。你基本上是在用它们,而不是用它应该怎么做。您称之为“我的模板页面”的页面应通过其在浏览器中的URL打开,而不是您称之为“facelet模板”的页面。将来防止这种错误的最好方法是将您在
(和
)中指定的页面存储在/WEB-INF
文件夹中,这样它们就永远不会被意外(或黑客)直接打开
以下是一个适用于您的案例的启动示例:
/WEB-INF/templates/template.xhtml
:
默认标题
/WEB-INF/templates/top.xhtml
:
top的一些默认内容
/page.xhtml
这里有新的页面标题
纳格罗维克
现在,您应该在浏览器中导航到/page.xhtml
(因此不是模板文件)
另见:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org
/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Insert title here</title></head>
<body>
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org
/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Insert title here</title>
</head>
<body>
<h2>aaaaaaaaa</h2>
</body>
</html>
</body>
</html>