Jsf 如何在Primefaces currentPageReportTemplate中使用html标记?
我想有一个当前的寻呼机来包装跨度计数(用于测试目的) 所以我试过了Jsf 如何在Primefaces currentPageReportTemplate中使用html标记?,jsf,jsf-2,primefaces,Jsf,Jsf 2,Primefaces,我想有一个当前的寻呼机来包装跨度计数(用于测试目的) 所以我试过了 并发现标签被转义。如何实现这一点?我看了PrimeFaces 5.0的源代码,至少我能说的是,您尝试做的事情不会很琐碎 从本质上讲,你所见证的行为是由以下因素引起的。它使用以下调用写出当前页面报告: 此方法的API文档显示了转义标记的原因: 在将对象转换为字符串(如有必要)后写入对象,然后 执行适用于标记语言的任何转义之后 正在呈现 如果您能以某种方式将该调用替换为下面的调用,您的标记将被保留: writer.write(ou
并发现标签被转义。如何实现这一点?我看了PrimeFaces 5.0的源代码,至少我能说的是,您尝试做的事情不会很琐碎 从本质上讲,你所见证的行为是由以下因素引起的。它使用以下调用写出当前页面报告: 此方法的API文档显示了转义标记的原因: 在将对象转换为字符串(如有必要)后写入对象,然后 执行适用于标记语言的任何转义之后 正在呈现 如果您能以某种方式将该调用替换为下面的调用,您的标记将被保留:
writer.write(output);
扩展CurrentPageReportRenderer
并覆盖render
方法相当简单,但是将自定义渲染器连接到PrimeFaces将被证明是更具挑战性的
JSF确实允许在faces config.xml
中指定自定义渲染器,但这发生在组件级别。用于数据表组件的默认呈现器是,它扩展了,这反过来又对CurrentPageReportRenderer
发挥了神奇的作用
这意味着您必须提供DataTableRenderer
的自定义实现,在该实现中,您必须覆盖DataRenderer
的encodePaginatorMarkup
方法,在该方法中插入自定义CurrentPageReportRenderer
。然后您必须设置faces config.xml
,告诉JSF使用您的呈现器实现,而不是PrimeFaces提供的实现
<renderer>
<component-family>org.primefaces.component</component-family>
<renderer-type>org.primefaces.component.DataTableRenderer</renderer-type>
<renderer-class>org.example.MyDataTableRenderer</renderer-class>
</renderer>
org.primefaces.component
org.primefaces.component.DataTableRenderer
org.example.MyDataTableRenderer
总而言之,这并不难做到,但解决方案相当脆弱,上述类的未来版本中的任何重大更改都可能破坏您的定制 谢谢大家!!我想可能有一个简单的方法:)编写自定义渲染器对我来说没问题
<renderer>
<component-family>org.primefaces.component</component-family>
<renderer-type>org.primefaces.component.DataTableRenderer</renderer-type>
<renderer-class>org.example.MyDataTableRenderer</renderer-class>
</renderer>