EL в композитном компоненте на Мохарре

помогите мне с проблемой.

Я использую Mojarra 2.1.16 и Tomcat 7.

У меня есть составной компонент:

<composite:interface>
    <composite:attribute name="value" default="#{modelsBean.allModels}"
                         type="java.util.List" />
</composite:interface>

<composite:implementation>
    <ui:repeat value="#{cc.attrs.value}" var="model" >
        #{model.name}
    </ui:repeat>
</composite:implementation>

Если я его использую, то у меня следующая ошибка:

javax.el.PropertyNotFoundException: /resources/panels/modelsView.xhtml
#{model.name}: Property 'name' not found on type java.lang.String

Если я изменюсь

<ui:repeat value="#{cc.attrs.value}" var="model">

to

<ui:repeat value="#{modelsBean.allModels}" var="model">

тогда все работает нормально.

Как исправить тогда?


person AnEi    schedule 15.01.2013    source источник


Ответы (1)


Вы не можете присвоить выражение значения как значение default. См. здесь более подробное объяснение: Составной компонент JSF, поддерживающий выражение EL bean-компонента по умолчанию при сбое обязательного атрибута, методы неизвестны

person fischermatte    schedule 15.01.2013
comment
Но, как видите, тип атрибута описывается в виде списка: ‹composite:attribute name=value default=#{modelsBean.allModels} type=java.util.List /› У меня проблема с элементами этого списка. - person AnEi; 15.01.2013
comment
Я думаю, это не имеет значения, похоже, что default работает только со значениями, которые являются строками или примитивами. Смотрите ответ по ссылке выше для получения дополнительной информации. Просто не используйте default и установите значение там, где вы используете свой компонент. <mytags:component value="#{modelsBean.allModels}"> - person fischermatte; 15.01.2013
comment
Спасибо за ответ, это действительно помогло мне - person AnEi; 16.01.2013