我已经创建了一个自定义的facelets标记文件,但我正在努力插入一些内容。这是标签:
<ui:composition 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">
<h1>TestTag</h1>
<ui:insert name="foo"/>
</ui:composition>
这就是我期望使用它的方式:
<ds:testtag>
<ui:define name="foo">
<h2>TestInsert</h2>
</ui:define>
</ds:testtag>
当然,我已经创建了一个taglib文件并在web.xml中注册了它。 ds:名称空间也在我想要使用标记的文件中声明。
在渲染结果上,我可以看到标签本身的 TestTag 标题,但不会看到插入的 TestInsert 。
此问题的回答How to create a custom Facelets tag?以及此处的评论How to create a composite component for a datatable column?表明可以在标记中插入内容;不幸的是,我找不到一个有效的例子。我错过了什么?
答案 0 :(得分:1)
试试这个(未经测试):
<ui:composition 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">
<h1>TestTag</h1>
<ui:insert />
</ui:composition>
并使用这样的组件:
<ds:testtag>
<h2>TestInsert</h2>
</ds:testtag>
答案 1 :(得分:-3)
您需要在组件中插入标签:
<ui:composition 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">
<h1>TestTag</h1>
<ui:insertChildren/>
</ui:composition>
当它像这样使用时:
<ds:testtag>
<h2>TestInsert</h2>
</ds:testtag>
您也可以使用
<composite:insertChildren/>
不要忘记正确的进口
xmlns:composite="http://java.sun.com/jsf/composite"
或
xmlns:ui="http://java.sun.com/jsf/composite"