Ajax 更新未使用 PrimeFaces 自定义渲染器
PrimeFaces custom renderer not used on Ajax update
我正在尝试编写一个更符合 WCAG 规则的 PrimeFaces 分页器。
原来第 link 页 (1 2 3 4 5) 不是 link,而是 <span>
有普通页码。我用 '' 包裹了这个数字,这样他们就可以集中注意力并在标题中解释这个 link 的用途。渲染器工作得很好,但是在使用它并更改页面(AJAX 请求)后,页面 links 呈现为旧样式。
这是为什么,如何解决?
我的渲染给出:
<span class="ui-paginator-pages">
<span class="ui-paginator-page ui-state-default ui-state-active ui-corner-all">
<a class="ui-paginator-page ui-state-default ui-state-active ui-corner-all" tabindex="10000" title="Link to page nr: 1">1</a>
</span>
<span class="ui-paginator-page ui-state-default ui-corner-all">
<a class="ui-paginator-page ui-state-default ui-corner-all" tabindex="10001" title="Link to page nr: 2">2</a>
</span>
</span>
更改页面后的结果是
<span class="ui-paginator-pages">
<span class="ui-paginator-page ui-state-default ui-corner-all" tabindex="0">1</span>
<span class="ui-paginator-page ui-state-default ui-corner-all ui-state-active" tabindex="0">2</span>
</span>
如您所见,更新后的结构就像普通 PrimeFaces 中一样。锚点消失了,标签索引回到 0
这种奇怪行为的原因是 AJAX 请求后的渲染页面是由 PrimeFaces 中定义的 Java 脚本代码完成的。这意味着在这种情况下覆盖默认渲染器必须在 Java 和 JavaScript 中完成。
我正在尝试编写一个更符合 WCAG 规则的 PrimeFaces 分页器。
原来第 link 页 (1 2 3 4 5) 不是 link,而是 <span>
有普通页码。我用 '' 包裹了这个数字,这样他们就可以集中注意力并在标题中解释这个 link 的用途。渲染器工作得很好,但是在使用它并更改页面(AJAX 请求)后,页面 links 呈现为旧样式。
这是为什么,如何解决?
我的渲染给出:
<span class="ui-paginator-pages">
<span class="ui-paginator-page ui-state-default ui-state-active ui-corner-all">
<a class="ui-paginator-page ui-state-default ui-state-active ui-corner-all" tabindex="10000" title="Link to page nr: 1">1</a>
</span>
<span class="ui-paginator-page ui-state-default ui-corner-all">
<a class="ui-paginator-page ui-state-default ui-corner-all" tabindex="10001" title="Link to page nr: 2">2</a>
</span>
</span>
更改页面后的结果是
<span class="ui-paginator-pages">
<span class="ui-paginator-page ui-state-default ui-corner-all" tabindex="0">1</span>
<span class="ui-paginator-page ui-state-default ui-corner-all ui-state-active" tabindex="0">2</span>
</span>
如您所见,更新后的结构就像普通 PrimeFaces 中一样。锚点消失了,标签索引回到 0
这种奇怪行为的原因是 AJAX 请求后的渲染页面是由 PrimeFaces 中定义的 Java 脚本代码完成的。这意味着在这种情况下覆盖默认渲染器必须在 Java 和 JavaScript 中完成。