2011-07-12 71 views
11

我與一個JSF團隊合作進行前端開發。我們正在輸出一個INPUT字段,我需要將placeholder和幾個data-屬性包含到呈現的標記中。然而,JSF正在剝離這些。我不知道JSF足夠對JSF團隊有什麼幫助,但我認爲我至少可以問問。JSF 2.0去掉需要的HTML5屬性

我們使用的是舊版本的JSF,但升級到2.0,因爲它似乎支持HTML5。情況並非如此嗎?有沒有一種已知的方法來解決這個問題?

回答

9

JSF並不完全剝離它們。它只是忽略它們,因爲它們不在所討論組件的支持/已知屬性之中。例如,在<h:inputText>(默認呈現HTML <input type="text">標籤)的情況下,您可以在view declaration language (VDL) documentation中找到所有支持的屬性。

要解決這個問題,您需要創建一個custom component或更好的custom renderer,它會覆蓋標準的<h:inputText>渲染器並將自定義屬性考慮在內。

+0

謝謝,Balus。這正是我們要採取的路線。爲我們所有的標籤編寫我們自己的渲染器。泰迪厄斯,但應該讓我們在那裏。 –

+2

[這是自定義渲染器](http://stackoverflow.com/questions/6859520/adding-custom-attribute-html5-support-to-jsf-2-0-uiinput-component) –

0

如果您使用的是Facelet,則可以簡單地在HTML5組件中寫入EL表達式。

例如視頻:

<video name="myVideo" poster="#{bean.poster}" > 
    <source src="#{bean.vidoeSrc}" type='video/ogg; codecs=&quot;theora, vorbis&quot;' /> 
</video> 

這樣,您就可以使用任何HTML5組件 - 並結合將是JSF其他JSF組件。您也可以在HTML的輸入元素中使用相同的想法。

EDITED

佔位符,你可以使用PrimeFaces就地。查看他們的組件瞭解更多詳情。

+0

你能解釋一下嗎?我不確定EL是什麼。我們特別的問題是讓'data- *'和'placeholder'屬性傳遞給HTML。看起來我們將不得不編寫我們自己的渲染器。 –

+0

@DA:EL(表達式語言)就是那些'#{}'的東西。另請參見http://stackoverflow.com/tags/el/info畢竟,我認爲Odelya將HTML5 **屬性**與HTML5 **標籤**混淆。 – BalusC