Вопрос

Я создал композитный компонент JSF для расширения H: 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}"/>

Когда этот компонент отображается в браузере, идентификатор имеет формат «Именное значение: firstName».

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

Это стандартная конвенция именования с шаблонами JSF 2.0? Я не получил это с шаблонами Facelets JSF 1.2. Есть ли способ генерировать удостоверение личности как просто «имя» вместо «Именного имени: firstName»

Это было полезно?

Решение

Композиционный компонент JSF 2.0 не совпадает с шаблоном Facelets JSF 1.x / 2.x.

Композитный компонент имеет свой собственный идентификатор. Вы в основном используете его на компонентах в реализации композитного компонента. Вы можете рассмотреть возможность добавления или переименования другого атрибута ID для компонентов в реализации. Например

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

с участием

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

Однако это будет в конечном итоге id="ccId:firstName" В HTML где ccId является либо фиксированным или аутогенерацией id из my:inputText. Отказ Вы также можете просто оставить его и использовать

<h:inputText id="input">

Который заканчивается как id="firstName:input" в HTML.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top