Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将复合组件迁移到自定义组件_Java_Jsf 2_Facelets_Composite Component - Fatal编程技术网

Java 将复合组件迁移到自定义组件

Java 将复合组件迁移到自定义组件,java,jsf-2,facelets,composite-component,Java,Jsf 2,Facelets,Composite Component,我必须将复合组件迁移到自定义组件。这个示例相当简单,但演示了问题:我的组件(my:test)的子组件需要在另一个组件中呈现。组合my:testC,作为我不想使用的一个示例,看起来是这样的 <composite:implementation> <p:panel> <composite:insertChildren/> </p:panel> </composite:implementation> 我想以如下方式使用my:t

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

<composite:implementation>
  <p:panel>
    <composite:insertChildren/>
  </p:panel>
</composite:implementation>
我想以如下方式使用
my:test

<my:test>
  <h:outputText value="some Text"/>
</my:test>


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

您观察到了这一点。您不能简单地在自定义组件中呈现“p:panel”或任何其他jsf标记

但是,您可以做什么:

  • 使用应用程序实例实例化子组件,将其作为方面或子项添加到自定义组件中,然后在自己的渲染器中对其调用encode

  • 直接呈现HTML

  • 使用应该在当前JSF中可用的FaceletAPI(我从未实际使用过)

  • 使用任何其他模板处理(如velocity或freemarker)来呈现HTML


我不理解具体的问题(事实上,没有具体的问题)。您是否具体询问如何在自定义组件中编码相同的
输出?或者,您是在具体询问如何为该部件重用
的默认编码器(渲染器)?孩子们根本不是问题所在,因为
encodeChildren()
会自动完成这一切,但第一段的最后一句似乎指出了另一个问题,这令人困惑。@BalusC感谢您关注这一问题。我已经更新了这个问题,希望现在能更好地理解它。回答您的问题:我正在尝试对
p:panel
的相同输出进行编码。
<my:test>
  <h:outputText value="some Text"/>
</my:test>