составной компонент внутри сетки не «расширяется» - PullRequest
2 голосов
/ 22 июня 2011

По сути, я использовал этот шаблон снова и снова в сетке панелей:

<h:panelGrid columns="2" >
    <h:outputLabel for="heroName" value="Hero Name : " />
    <h:panelGroup>
        <h:inputText label="Hero Name : "
            value="#{ccBean.data.map['heroName']}" id="heroName" />
        <p:message for="heroName" />
    </h:panelGroup>
    ...
</h:panelGrid>

Я заметил, что я так много дублирую, как идентификатор в h: inputText, который будет дублироваться сновав for = "idValue" для outputLabel, а затем снова в p: message .То же самое происходит со значением label inputText и значением h: outputLabel .

Итак, я подумывал о создании простого составного компонента, чтобы обернуть их:

<composite:interface>
    <composite:attribute name="id" required="true" />
    <composite:attribute name="label" required="true" />
    <composite:attribute name="value" required="true" />
    <composite:attribute name="includeLabel" required="false" default="false"/>
</composite:interface>

<composite:implementation>
    <h:outputLabel for="#{cc.attrs.id}" value="#{cc.attrs.label}" 
            render="#{cc.attrs.includeLabel}" />
    <h:panelGroup>
        <h:inputText label="#{cc.attrs.label}"
            value="#{cc.attrs.value}" id="#{cc.attrs.id}" />
        <p:message for="#{cc.attrs.id}" />
    </h:panelGroup>
</composite:implementation>

А затем я использую составные компоненты:

<h:panelGrid columns="2" >
    <s:inputText
        id="heroName"
        label="Hero Name : "
        value="#{ccBean.data.map['heroName']}"
            includeLabel="true"
    />
    <s:inputText
        id="heroName2"
        label="Hero Name 2 : "
        value="#{ccBean.data.map['heroName2']}"
            includeLabel="true"
    />
    ...
</h:panelGrid>

Этот составной компонент работает нормально, но теперь panelGrid предполагает, что s: inputText является одним компонентом.Перед использованием составного компонента в одном ряду находятся два компонента, а именно outputLabel и panelGroup.

Можно ли намекнуть составному компоненту, чтобы он «расширил» себя в этом случае, чтобы он занимал 2столбцы вместо 1 столбца в моей панели Grid?

Спасибо!

1 Ответ

2 голосов
/ 22 июня 2011

Нет, к сожалению, нет.Лучше всего вместо этого создать простой файл тега.

См. Также:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...