在JSF 2.0组件中包含子元素 [英] Include sub-element inside JSF 2.0 component
问题描述
这必须很简单.我试图将子元素传递到JSF组件中.我的组件声明为:
This must be simple. I am trying to pass sub-element into a JSF component. I have my component declared as:
<?xml version='1.0' encoding='UTF-8' ?>
<!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"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:composite="http://java.sun.com/jsf/composite">
<composite:interface>
</composite:interface>
<composite:implementation>
<div style="border: 1px solid black;">
<ui:insert />
</div>
</composite:implementation>
</html>
然后我通过以下方式在页面中使用它:
Then I use this in a page by:
<box:box>
<p>Hello world!</p>
</box:box>
不幸的是,该框呈现为ok(黑色边框),但显示为"Hello world!".文本不包含在其中.我还尝试使用<ui:insert name="content">
并通过<ui:define name="content">Hello World!</ui:define>
调用更详细的语法,但这没用.
Unfortunately, the box renders ok (the black border) but the "Hello world!" text is not included within it. I also tried more verbose syntax by using <ui:insert name="content">
and calling by <ui:define name="content">Hello World!</ui:define>
but it didn't work.
我在哪里犯错?
推荐答案
好,我知道了.您应该使用 <composite:insertChildren />
代替:
Ok I figured it out. You should use <composite:insertChildren />
instead as in:
<?xml version='1.0' encoding='UTF-8' ?>
<!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"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:composite="http://java.sun.com/jsf/composite">
<composite:interface>
</composite:interface>
<composite:implementation>
<div style="border: 1px solid black;">
<composite:insertChildren />
</div>
</composite:implementation>
</html>
这有效.
这篇关于在JSF 2.0组件中包含子元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!