Передача выражения EL в составной компонент

мы все еще находимся в сценарии миграции JSF с 1.2 на 2.0, и теперь мы сталкиваемся с проблемой, связанной с переменными c: set или ui: param, используемыми внутри выражения EL.

Вот факты. В качестве составного компонента есть кнопка:

<cc:interface name="button" shortDescription="A button.">
    ...
    <cc:attribute
        name="disabled"
        required="false"
        default="false"
        shortDescription="The disabled flag." />
    ...
</cc:interface>

<cc:implementation>
    <ice:commandButton
        ...
        disabled="#{cc.attrs.disabled}"
        ... />
</cc:implementation>

Теперь мы пытаемся использовать этот компонент кнопки внутри панели инструментов. Отключенное состояние кнопки определяется внутри панели инструментов с помощью c: set или ui: param (мы уже пробовали оба способа).

<c:set var="isButtonEnabled" value="#{backingBean.buttonEnabled}" />
or
<ui:param name="isButtonEnabled" value="#{backingBean.buttonEnabled}" />

#{isButtonEnabled}

<ctrl:button
    ...
    disabled="#{!isButtonEnabled}"
    ... />

Итак, вот наша проблема. Если мы просто распечатаем значение «isButtonEnabled» на панели инструментов, это всегда правильно. Так что с бобом все в порядке. Но когда мы пытаемся передать это значение составному компоненту, оно не работает. «Отключено» всегда оценивается как ложное.

Конечно, мы можем передать выражение метода напрямую (# {! BackingBean.isButtonEnabled}), и это будет работать нормально. Но в нашем сценарии определение флажка enabled гораздо сложнее, и я просто попытался сделать пример как можно более простым. Кроме того, этот флаг используется для нескольких кнопок на панели инструментов, поэтому мы хотели сохранить код поддерживаемым, используя c: set или ui: param. Это неправильный способ справиться с этим? Что вы порекомендуете?

Заранее спасибо.

Слим Шейди

Ответы на вопрос(1)

Ваш ответ на вопрос