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
类来呈现我的自定义组件。我覆盖 encodeBegin
或 encodeEnd
以实现我想要的输出。
我想知道什么时候应该使用这两种方法?关于何时应该使用encodeBegin
和encodeEnd
是否有任何指导方针?
【问题讨论】:
【参考方案1】:这取决于组件树的层次结构。关键是,你期待孩子吗?当有孩子时,您希望编码后的输出看起来如何?
通常,如果您想在子级编码之前对输出进行编码,您可以使用encodeBegin()
。例如。一个开始标签,如 html <div>
。通常,如果要在子项编码后对输出进行编码,则使用encodeEnd()
。例如。一个结束标记,如 HTML </div>
。或者可能是一个额外的<script>
,它应该适用于之前生成的<div>
。
【讨论】:
在孩子被编码之前/之后编码输出?这是否意味着生成像<div><span>span text</span>div text</div>
这样的HTML?但这甚至可以在encodeBegin
或encodeEnd
的单一方法中生成。如果我理解正确,请告诉我。
我是说有孩子,<your:component><other:childA/><other:childB/></your:component>
。现在有意义吗?你不应该关心孩子的实际编码。他们都是自己做的。但是使用encodeBegin()
,您可以在子级编码之前控制输出,然后使用encodeEnd()
控制输出。
知道了! :) 感谢您的支持。我对这个 JSF 的东西很陌生。以上是关于JSF中的encodeBegin vs encodeEnd,应该首选哪一个的主要内容,如果未能解决你的问题,请参考以下文章