我必须将复合组件迁移到自定义组件。此示例相当简化,但演示了问题:我的组件(my:test
)的子项需要在另一个组件中呈现。复合my:testC
,作为我不想使用的示例,看起来像这样
<composite:implementation>
<p:panel>
<composite:insertChildren/>
</p:panel>
</composite:implementation>
显然(至少我希望我对这个假设是正确的)我不能简单地在p:panel
中呈现encodeBegin
。
@FacesComponent("test")
public class Test extends UIPanel
{
@Override
public void encodeBegin(FacesContext context) throws IOException
{
// ??
}
@Override
public void encodeEnd(FacesContext context) throws IOException
{
// ??
}
}
我希望以这样的方式使用my:test
:
<my:test>
<h:outputText value="some Text"/>
</my:test>
输出应与使用PrimeFaces面板中呈现的my:testC
:一些Text 相同。如何在我的Java类中编码p:panel
的用法?
答案 0 :(得分:0)
但是你可以做什么:
使用Application实例实例化子组件,将其作为facet或child添加到自定义组件,然后在您自己的渲染器中对其进行编码。
直接呈现HTML
使用当前JSF中应该可用的facelet API(我从未真正使用过它)
使用任何其他模板处理(如velocity或freemarker)来呈现HTML。