質問

私はHを拡張するJSF複合コンポーネントを作成した:INPUTBOX

        <p class="label clear">
            <label for="#{cc.attrs.id}" class="">
                #{cc.attrs.label}:
            </label>
        </p>
        <p>
            <h:inputText id="#{cc.attrs.id}" value="#{cc.attrs.value}" 
                size="#{cc.attrs.size}" />
            <ui:fragment rendered="#{cc.attrs.optional eq 'optional'}">
                <span class="optional">Optional</span>
            </ui:fragment>
        </p>

このコンポーネントを使用するには..

<my:inputText id="firstName" label="First Name" value="#{nameTO.firstName}"/>
このコンポーネントは、ブラウザ上にレンダリングされる場合、

は、IDの形式である。「のfirstName:firstNameの」

<input type="text" value="" name="firstName:firstName" id="firstName:firstName" gtbfieldid="3028">

これはJSF 2.0テンプレートと標準の命名規則ですか?私は、JSF 1.2のFaceletsテンプレートでこれを取得できませんでした。 「firstNameの:firstNameの」だけ「firstNameの」代わりのようにIDを生成する方法はあります

役に立ちましたか?

解決

はA JSF 2.0の複合コンポーネントは、JSF 1.1 / 2.xのFaceletsのテンプレート

と同じではありません

は、複合コンポーネントが同様に自身のIDを持っています。あなたは、基本的には、複合コンポーネントの実装のコンポーネントでそれを再利用しています。追加または実装におけるコンポーネントの別のID属性の名前を変更することを検討する必要があります。例えばます。

<my:inputText name="firstName" label="First Name" value="#{nameTO.firstName}" />

<h:inputText id="#{cc.attrs.name}">

しかしid="ccId:firstName"ccIdの固定または自動生成idのいずれかであるHTMLでmy:inputTextとなってしまいます。また、単に離れてそれを残すことができ、使用

<h:inputText id="input">
HTMLでid="firstName:input"として終わる

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top