2012-11-12 57 views
1

我有一個只包含PrimeFaces日曆組件的JSF頁面,它支持一個視圖範圍的bean。如何從支持bean獲取JSF 2.0組件生成的HTML的DOM?

<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。我開始懷疑這是否是解決問題的方法。

我的谷歌技巧似乎在這裏不足。有誰能夠幫助我?

回答

1

具體的功能需求並不完全清楚,所以很難提出這樣的方法,但通常有各種各樣的方法來改變JSF/PrimeFaces生成的HTML的look'n'feel。

  1. 使用自定義CSS。圖標可以簡單地設置爲CSS背景圖像。

  2. 使用自定義JS。 JS可以即時訪問整個HTML DOM樹。

  3. 使用自定義JSF渲染器。擴展PrimeFaces CalendarRenderer類並相應地覆蓋encodeXxx()方法。

背襯豆應該是該圖(XHTML文件)和模型之間的控制器(JavaBean的實體類保持其爲要呈現給終端用戶或者捕捉從提交的數據的數據最終用戶)。它不應該操縱HTML。

+0

從你的答案我收集到,試圖從輔助bean操縱HTML是不是要走的路。自定義CSS不是一個選項,因爲這些圖標只能出現在_some_天。我已經考慮過你的第二個解決方案,但它看起來太複雜而不實際。第三種選擇正是我所需要的。所以,感謝BalusC。 – Rinke