JSP自定义标签带有JSF身体
-
26-10-2019 - |
题
我要为网站创建自己的模板机制。我制作了2个名为“ TemplateInsert”和“ Templatefor”的自定义标签,这样的标签会这样使用:
<prefix:insert templateFile="someFile>
<prefix:for name="body">
some content here
</prefix:for>
other prefix:for tags...
</prefix:insert>
除非您的“内容”内部有JSF标签,否则这可以很好地工作。服务器似乎没有解析它们。有人知道我如何解决这个问题吗?
干杯!
解决方案
这是根据JSF 2.0 / Java EE的Facelets继承JSP的太多原因之一。JSP提供的模板功能很少。但是,如果您按照其单独安装,则可以在JSF 1.X上使用Facelets 1.x Docbook.
FACELET可以准确地提供您的功能要求。一个例子:
template.xhtml
<!DOCTYPE html>
<html lang="en"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
>
<head>
<title><ui:insert name="title" /></title>
</head>
<body>
<ui:insert name="body" />
</body>
</html>
page.xhtml
<ui:composition template="template.xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
>
<ui:define name="title">Page title</ui:define>
<ui:define name="body">
<h:outputText value="JSF tags just work here." />
</ui:define>
</ui:composition>
我会说,作为JSF查看技术,而不是基于JSP来重新发明一个Facelets。
不隶属于 StackOverflow