Passando a expressão EL para o componente composto

ainda estamos em um cenário de migração do JSF 1.2 para 2.0 e agora estamos enfrentando um problema relacionado às variáveis c: set ou ui: param usadas dentro de uma expressão E

Aqui estão os fatos. Há um botão como componente composto:

<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>

gora, estamos tentando usar esse componente de botão dentro de uma barra de ferramentas. O estado desativado do botão é determinado dentro da barra de ferramentas usando um c: set ou um ui: param (já tentamos nos dois sentidos).

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

#{isButtonEnabled}

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

Então aqui está o nosso problema. Se simplesmente imprimirmos o valor de "isButtonEnabled" na barra de ferramentas, ele estará sempre correto. Então o feijão de apoio está ok. Mas quando tentamos passar esse valor para o componente composto, ele não está funcionando. "Desativado" é sempre avaliado como falso.

Certamente podemos passar a expressão do método diretamente (# {! BackingBean.isButtonEnabled}) e isso funcionará bem. Mas, em nosso cenário, a determinação do sinalizador ativado é muito mais complicada e eu apenas tentei manter o exemplo o mais simples possível. Além disso, esse sinalizador é usado para vários botões dentro da barra de ferramentas; portanto, queríamos manter o código sustentável usando um c: set ou ui: param. Esta é a maneira errada de lidar com isso? O que você recomenda

Desde já, obrigado

Magro obscur

questionAnswers(2)

yourAnswerToTheQuestion