@igorventurelli escreveu:
Quando o usuário clica no selectBooleanCheckbox, capturo a mudança de valor no Bean através do atributo
valueChangeListener
.
Dado uma condição, é possível que eu queira reverter a troca de valores, ou seja, se o usuário clicou para "checkar", eu quero "descheckar".
A parte dovalueChangeListener
está tranquila.
O problema é o fato de propagar esse valor para view.Conforme o exemplo acima, eu quero "setar" o valor dele para
false
.
Faço isso no Bean (certeza, já debuguei para verificar se o valor estava sendo alterado de fato).Consigo atualizar o
growl
que está em outro form, mas não consigo atualizar o próprio componente.
Já tentei as formas:
update="@this"
;process="@this"
;event="change" update="@this"
Nenhuma funcionou.
Seguem os códigos:
View:
<h:panelGrid columns="2" cellpadding="2" style="margin-left: -5px;"> <p:selectBooleanCheckbox id="myValue" value="#{bean.myPropertyVO.myValue}" valueChangeListener="#{bean.changeListener}"> <p:ajax update=":growlForm" /> </p:selectBooleanCheckbox> <h:outputLabel value="#{msg.myMessage}" for="myValue" /> </h:panelGrid>
Bean:
public void changeListener(final ValueChangeEvent event) throws MyException { final MyType changedComponent = MyType .getByName(event.getComponent().getId()); if((Boolean) event.getNewValue()) { if(isCondition()) { //na chamada do método myMethod eu seto o valor da propriedade para false this.business.myMethod( this.myPropertyVO, changedComponent, false); return; } this.myList.add(changedComponent); } else { this.myList.remove(changedComponent); } }
Agradeço desde já!
Mensagens: 1
Participantes: 1