Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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

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
Jsf 如何在Primefaces currentPageReportTemplate中使用html标记?_Jsf_Jsf 2_Primefaces - Fatal编程技术网

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>