JSF中的encodeBegin vs encodeEnd,应该首选哪一个

Posted

技术标签:

【中文标题】JSF中的encodeBegin vs encodeEnd,应该首选哪一个【英文标题】:encodeBegin vs encodeEnd in JSF and which one should be preferred 【发布时间】:2013-07-08 09:06:31 【问题描述】:

我正在使用javax.faces.render.Renderer 类来呈现我的自定义组件。我覆盖 encodeBeginencodeEnd 以实现我想要的输出。

我想知道什么时候应该使用这两种方法?关于何时应该使用encodeBeginencodeEnd 是否有任何指导方针?

【问题讨论】:

【参考方案1】:

这取决于组件树的层次结构。关键是,你期待孩子吗?当有孩子时,您希望编码后的输出看起来如何?

通常,如果您想在子级编码之前对输出进行编码,您可以使用encodeBegin()。例如。一个开始标签,如 html <div>。通常,如果要在子项编码后对输出进行编码,则使用encodeEnd()。例如。一个结束标记,如 HTML </div>。或者可能是一个额外的<script>,它应该适用于之前生成的<div>

【讨论】:

在孩子被编码之前/之后编码输出?这是否意味着生成像<div><span>span text</span>div text</div>这样的HTML?但这甚至可以在encodeBeginencodeEnd 的单一方法中生成。如果我理解正确,请告诉我。 我是说有孩子,<your:component><other:childA/><other:childB/></your:component>。现在有意义吗?你不应该关心孩子的实际编码。他们都是自己做的。但是使用encodeBegin(),您可以在子级编码之前控制输出,然后使用encodeEnd() 控制输出。 知道了! :) 感谢您的支持。我对这个 JSF 的东西很陌生。

以上是关于JSF中的encodeBegin vs encodeEnd,应该首选哪一个的主要内容,如果未能解决你的问题,请参考以下文章

如何将现有的 JSF 组件添加到我自己的自定义组件中?

JSF action vs actionListener [重复]

JSF vs Facelets vs JSP [重复]

jsf 2.2 中的 URL 更新 [重复]

JSF 中的 Web 过滤器

JBoss RichFaces vs IceFaces vs Apache Trinidad - JSF 组件库比较