Galera,
eu tenho um component composition que por sua vez tem um inputText. Em uma determinada situação eu preciso colocar um valueChangeListener. Para isso eu criei o código abaixo:
<cc:attribute name="valueChangeListener" method-signature="void listener(javax.faces.event.ValueChangeEvent)"/>
...
<h:inputText ... valueChangeListener="#{cc.attrs.valueChangeListener}" />
Blz, funciona normalmente quando eu passo o valueChangeListener, Porém o atributo é “opcional” então quando eu não preciso dele, eu não passo o valueChangeListener. Nesse case da erro dizendo que o atributo valueChangeListener não pode ficar em branco. Exemplo:
[code]<cc:meuComponente valueChangeListener="#{teste.metodoListener}"/> // FUNCIONA
<cc:meuComponente /> // NÃO-FUNCIONA pois é como se eu fizesse: <h:inputText valueChangeListener=""/>
[/code]
Tem algum jeito de eu fazer com que esse atributo se não informado não seja colocado no componente? Eu resolvi fazendo uma “gambiarra”, coloquei dois componentes <h:inputText> dentro do componente composite um com o valueChangeListener e outro sem daí eu renderizo de acordo com o que o cara passou ou não. Porém eu só citei o exemplo de um de atributo mas no caso eu tenho um componente que são 3 atributos opcionais que ocorrem esse problema, por exemplo action, actionListener e outros. Daí não da pra solucionar usando rendered porque eu tenho que criar componentes com todas as possibilidades e aí começa a ficar inviável.
Alguém tem alguma proposta de solução?