我写了.xhtml
页面,其中包含以下代码:
<html>
<head>
<title>Test</title>
</head>
<body>
<p>P</p>
</body>
</html>
我在新窗口中使用JavaScript打开此页面。
不幸的是它显示为
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<div id="">
<html>
<head>
<title>Test</title>
</head>
<body>
<p>P</p>
</body>
</html>
</div>
</html>
这当然是无效的HTML。如何删除附加的标签?为什么他们首先被创造出来?
我正在使用JSF 1.2,Facelets,Portlet API 2.0和JBoss PortletBridge。
答案 0 :(得分:0)
尝试使用jsf头部和身体组件:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<f:view>
<h:head>
<title>Test</title>
</h:head>
<h:body>
<p>P</p>
</h:body>
</f:view>
</html>
答案 1 :(得分:0)
您应该使用包含组件的模板,然后在您的页面中使用
示例 模板
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html dir="ltr" xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
>
<h:head>
<title><ui:insert name="title">Default title</ui:insert></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</h:head>
<h:body dir="ltr">
<ui:insert name="content" />
</h:body>
</html>
和.xhtml页面
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<f:view xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
>
<html>
<head></head>
<body>
<ui:composition template="${empty param.sl ? '/includes/template.xhtml' : '/includes/templatepopup.xhtml'}">
<ui:define name="title">${msg.removeapplicant_title}</ui:define>
<ui:define name="content">
<f:view>
put your htlml here
</f:view>
</ui:define>
</ui:composition>
</body></html>
</f:view>
答案 2 :(得分:0)
我现在为弹出窗口写了一个HttpServlet
来规避这个问题。由于它转发的文件以*.jsp
结尾,因此它不受FacesServlet
的影响,也不会附加奇怪的标题。