2011-07-12 6 views
11

私はフロントエンド開発を行っているJSFチームと協力しています。私たちはINPUTフィールドを出力しており、placeholderといくつかのdata-属性をレンダリングされたタグに含める必要があります。しかし、JSFはこれを取り除いています。私はJSFチームに多くの助けになるほどJSFを知りませんが、少なくとも私は周りに尋ねることができると考えました。JSF 2.0は必要なHTML5属性を取り除きます

古いバージョンのJSFを使用していましたが、HTML5をサポートするように見えたので、2.0にアップグレードしました。そうじゃないの?これを回避する方法はありますか?

答えて

9

JSFはそれらを完全に取り除いていません。問題のコンポーネントのサポートされている/既知の属性に含まれていないため、無視しているだけです。たとえば、<h:inputText>(デフォルトではHTML <input type="text">タグがレンダリングされます)の場合、サポートされるすべての属性はview declaration language (VDL) documentationにあります。

この問題を解決するには、標準<h:inputText>レンダラーを上書きしてカスタム属性を考慮に入れて、custom componentを作成するか、またはそれよりも良いcustom rendererを作成する必要があります。

+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> 

あなたがANY HTML5コンポーネントを使用することができますこの方法 - 及びその他のJSFコンポーネントとJSFになりますバインディング。 HTMLのinput要素でも同じ考え方を使うことができます。

EDITEDは、プレースホルダの

あなたはPrimeFacesインプレースを使用することができます。詳細については、コンポーネントを確認してください。

+0

これ以上説明できますか?私はELが何であるか分かりません。私たちの特に問題は 'data- *'と 'placeholder'属性をHTMLに渡すことです。独自のレンダラーを書く必要があるようです。 –

+0

@DA:EL(表現言語)は、それらの '#{}'ものです。結局のところ、OdelyaはHTML5 **属性**とHTML5 **タグ**を混同していると私は信じています。 – BalusC

関連する問題