【问题标题】:How to get the DOM of a JSF 2.0 component's generated HTML from the backing bean?如何从支持 bean 获取 JSF 2.0 组件生成的 HTML 的 DOM?
【发布时间】:2012-10-31 21:59:47
【问题描述】:

我有一个 JSF 页面,其中仅包含一个 PrimeFaces 日历组件,由一个视图范围的 bean 支持。

<p:calendar value="#{calendarBean.today}" mode="inline" showOtherMonths="true" pages="1" binding="#{calendarBean.model}" />

为这个组件生成的 HTML 包含一个我想调整的表格。更具体地说,我想通过在目标日期的 td-tags 下添加一些 HTML 代码来动态地将图标放入此日历中。

从 CalendarBean 中,我可以从某些服务中获取代表“带有图标”的日子的对象列表。我需要这个列表来决定在表格中更改哪些日期。我试图在我的支持 bean 中获取 HTML DOM,但我不明白如何。 UIComponent 树(我通过绑定属性获得)仅包含 JSF 组件,而不包含生成的 HTML。我开始怀疑这是否是解决问题的方法。

我的 google-skill 似乎在这里不足。有人可以帮帮我吗?

【问题讨论】:

    标签: java jakarta-ee jsf-2 primefaces


    【解决方案1】:

    具体的功能需求并不完全清楚,因此很难为此提出正确的方法,但通常有多种方法可以改变 JSF/PrimeFaces 的外观- 生成的 HTML。

    1. 使用自定义 CSS。图标可以简单地设置为 CSS 背景图像。

    2. 使用自定义 JS。 JS 可以即时访问整个 HTML DOM 树。

    3. 使用自定义 JSF 渲染器。扩展 PrimeFaces CalendarRenderer 类并相应地覆盖 encodeXxx() 方法。

    支持 bean 应该是视图(XHTML 文件)和模型(保存要呈现给最终用户或捕获最终用户提交的数据的数据的 javabean 实体类)之间的控制器。它不应该操纵 HTML。

    【讨论】:

    • 从您的回答中,我了解到尝试从支持 bean 操作 HTML 不是要走的路。自定义 CSS 不是一个选项,因为图标只能在 某些 天出现。我已经考虑过您的第二个解决方案,但它似乎太复杂而不实用。第三个选项正是我所需要的。所以,谢谢 BalusC。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    • 2012-09-06
    • 2011-07-23
    • 2014-03-10
    相关资源
    最近更新 更多