如何在JSF自定义组件中通过编程方式向Response Writer写入组件?
自定义JSF组件实现(替代复杂复合组件)
当我判断手头的任务用复合组件来实现过于复杂后,决定在JSF中自定义组件,具体实现代码如下:
@FacesComponent("offervaluescustom") public class OfferValuesCustom extends UIComponentBase { @Override public void encodeBegin(FacesContext context) throws IOException { ResponseWriter writer = context.getResponseWriter(); writer.startElement("table", this); // 这里编写更多渲染逻辑代码 writer.endElement("table"); } }
一些实践补充
- 这种方式直接通过
ResponseWriter手动输出HTML,能完全掌控组件的渲染细节,刚好适配复合组件无法覆盖的复杂场景 - 我目前正在结合PrimeFaces框架使用这个自定义组件,实践中要注意确保组件能融入PrimeFaces的组件树,比如正确处理状态维护、事件绑定等细节
内容的提问来源于stack exchange,提问作者Kalle Richter
相关产品推荐
相关产品推荐

