Почему «визуализированный» атрибут составного компонента вызывает исключение IllegalArgument? - PullRequest
6 голосов
/ 12 ноября 2011

Я создаю составной компонент, подобный этому:

<cc:interface>        
    <cc:attribute name="value" 
                  required="true" />
    <cc:attribute name="rendered"
                  displayName="True to render"
                  default="true" />
</cc:interface>

Когда я вызываю этот компонент, я получаю исключение IllegalArgumentException. Я могу изменить имя на другое (например, doIt ), и тогда оно будет работать.

Зарезервирован ли визуализированный атрибут как-нибудь зарезервирован? Я хочу, чтобы мой составной компонент выглядел как "обычный" компонент JSF.

Это с Мохаррой.

1 Ответ

14 голосов
/ 13 ноября 2011

Составные компоненты расширяют UINamingContainer, что в свою очередь расширяет UIComponentBase, что в свою очередь уже определяет атрибуты id и rendered.Вам не нужно указывать их самостоятельно.Просто удалите <cc:attribute name="rendered">.Если вы укажете атрибут rendered в теге составного компонента, он будет интерпретирован и применен к самому составному компоненту.

Если вы хотите отрендерить специфичные дочерние элементы составноготогда лучше придумать другое имя атрибута.Например, renderSomeChild.

...