2015-05-12 31 views
3

從JSF2.2開始,可以在HTML5中編寫更多元素:編寫<button>可以等效於編寫<h:commandButton>與其他組件庫一起使用JSF HTML5友好標記

但是,這與其他組件庫如何工作?是否可以重寫該行爲,並將<button>從默認/標準庫(比如來自primefaces的<p:commandButton>)轉換爲某個庫中的組件?

從文檔中,我可以看到需要一個TagDecorator,但我在primefaces中沒有看到任何東西。這是因爲primefaces還沒有實現該功能,還是因爲JSF HTML5友好標記只能生成標準組件(http://xmlns.jcp.org/jsf/html)?

回答

2

正如您在鏈接到的TagDecorator頁面上看到的,'html5友好'標記僅與'基本'輸入,按鈕和鏈接有關。 PrimeFaces有一些對應的功能,但如果仔細看看這個'html5友好'符號的優點,它主要是在設計部分。爲什麼..

這些3個例子看看:

  1. <input type="number" jsf:value="#{bean.value}"/>
  2. <p:inputText type="number" value="#{bean.value}"/>
  3. <h:inputText type="number" value="#{bean.value}"/>http://balusc.blogspot.com.au/2012/06/adding-html5-attributes-to-standard-jsf.html

第一個是HTML(5)友好。但是,2和3在客戶端上渲染的東西依賴於渲染器的共享實現(在tagDecorator頁面中可以看到)。什麼1呈現是依賴PrimeFaces做什麼。他們都可以在客戶端渲染一個<input type="number".../>,但他們也可以渲染更復雜的東西(如PrimeFaces現在所做的)。

那麼這種妝容的優點是什麼?就像我看到的那樣,這是對所有Javascript框架和Tapestry所倡導的其他組件框架的「反作用」。你可以使用純html來進行頁面設計。在我看來,這隻有有限的優勢。許多相關的UI組件類型,如數據表,樹,菜單,選項卡等,都需要大量的javascript才能工作,爲純HTML添加類並且更接近頁面最終的樣子,因此它們看起來不太好在設計師,因爲所有這些CSS和東西都失蹤了。對於複雜的jsf組件,btw也是如此,它們在設計器中不會很好,而且你仍然需要jsf'標籤'。所以最後,你會混合純html標記與他們的符號和'正常'jsf,我試過和不喜歡的一個組合(一致性好)

所以總而言之,我不認爲這很奇怪PF沒有添加TagHandlers來支持這個符號到他們的框架。我寧願讓他們花費時間和精力來進一步改進他們的組件。

+2

Bravo! tl; dr:「HTML5友好標記」僅當您打算手工**時纔有意義,將JSF與客戶端框架(如jQuery UI,Bootstrap等)結合在一起,而不是使用已使用這些框架的JSF組件庫(PrimeFaces,BootsFaces等)。食物的思想:http://stackoverflow.com/questions/4421839/what-is-the-need-of-jsf-when-ui-can-be-achieved-from-css-html-javascript-jquery – BalusC

+0

@BalusC :並不重要(我可以花很多錢)但我不確定Bravo是否有任何諷刺! ;-) – Kukeltje

+0

我很高興看到另一個沒有被HTML5嗡嗡聲弄瞎的人。所以確實有一些諷刺,但沒有針對你:) – BalusC