gpt4 book ai didi

java - 将复合组件迁移到自定义组件

转载 作者:搜寻专家 更新时间:2023-10-31 08:03:50 24 4
gpt4 key购买 nike

我必须将复合组件迁移到自定义组件。这个例子相当简单,但说明了问题:我的组件 ( my:test ) 的子组件需要在另一个组件中呈现。复合 Material my:testC ,作为一个我不想使用的例子,看起来像这样

<composite:implementation>
<p:panel>
<composite:insertChildren/>
</p:panel>
</composite:implementation>

显然(至少我希望我的假设是正确的)我不能简单地渲染 p:panelencodeBegin .

@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>

输出应该与使用 my:testC 相同: 一些文本 在 PrimeFaces 面板中呈现。如何对 p:panel 的用法进行编码在我的 Java 类中?

最佳答案

您没有看错。您不能简单地在自定义组件中呈现“p:panel”或任何其他 jsf 标记。

但是你可以做什么:

  • 使用 Application 实例实例化子组件,将其作为 facet 或子组件添加到您的自定义组件,然后在您自己的渲染器中对其调用编码。

  • 直接渲染 HTML

  • 使用当前 JSF 中应该可用的 facelet API(我从未实际使用过它)

  • 使用 velocity 或 freemarker 等任何其他模板处理来呈现 HTML。

关于java - 将复合组件迁移到自定义组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16829973/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com