Tenho uma tela de saldo aonde o cliente selciona o banco e eu mostro o saldo do mesmo, so que ele so mostra do primeiro banco selecionado, caso contrario o valor nao muda mais apesar do objeto conta esta sendo setado e o atributo saldo esta sendo modificado.
bom pelo binding…
vc cria um componente do tipo input e passa para ele o valor que vc quer…
mas acho que se vc tirar essa paradas ae de Faces…etc…
e der apenas um set/get no valor ele atualiza!!!
se optar por criar o binding… é só ir lá no campo
que vc quer preencher e colocar binding={#meubena.meuInput}…
e no metodo do valueChangeListener vc preenche ele …acredito que irar funcionar!!! se de certo posta ae como é que ficou!!!
Resolvi o problema com ValueChangeListener usando o ciclo de vida do bean.
com esse codigo eu faço com que o listener seja executado no ciclo de vida do bean em que ele vai executar os gets, pois o get era eecutado antes do listener
if (pEvent.getPhaseId().equals(PhaseId.ANY_PHASE)){
pEvent..setPhaseId(PhaseId.UPDATE_MODEL_VALUES);
pEvent.queue();
}
if ( pEvent.getPhaseId().equals(PhaseId.UPDATE_MODEL_VALUES)){
//codigo de desejado
}
[quote=afamorim]Resolvi o problema com ValueChangeListener usando o ciclo de vida do bean.
com esse codigo eu faço com que o listener seja executado no ciclo de vida do bean em que ele vai executar os gets, pois o get era eecutado antes do listener
if (pEvent.getPhaseId().equals(PhaseId.ANY_PHASE)){
pEvent..setPhaseId(PhaseId.UPDATE_MODEL_VALUES);
pEvent.queue();
}
if ( pEvent.getPhaseId().equals(PhaseId.UPDATE_MODEL_VALUES)){
//codigo de desejado
}
[/quote]
Isso parece swing.
Engraçado imaginar que você precisa fazer uma gambiarra para a ferramenta valueChangeListener funcionar como ela já deveria funcionar naturalmente, ou seja, fazendo o menaged bean já ter recebido o valor que foi alterado pelo usuário antes de tratá-lo.
Importante lembrar que o objeto ValueChangeEvent tem dois métodos getNewValue() e getOldValue(). Com esses dois métodos, você pode inclusive tratar casos onde é importante saber qual opção estava selecionada ANTES de o usuário modificar o select.
[quote=afamorim]Resolvi o problema com ValueChangeListener usando o ciclo de vida do bean.
com esse codigo eu faço com que o listener seja executado no ciclo de vida do bean em que ele vai executar os gets, pois o get era eecutado antes do listener
if (pEvent.getPhaseId().equals(PhaseId.ANY_PHASE)){
pEvent..setPhaseId(PhaseId.UPDATE_MODEL_VALUES);
pEvent.queue();
}
if ( pEvent.getPhaseId().equals(PhaseId.UPDATE_MODEL_VALUES)){
//codigo de desejado
}
[/quote]
Não dei certo comigo. Segue como eu fiz :<h:selectBooleanCheckbox id="sabM1" valueChangeListener="#{beanEscalaProfessor.testando}"
onchange="submit()" value="#{beanEscalaProfessor.validadia[5][0]}">
<f:ajax render="sexN2"/>
</h:selectBooleanCheckbox>
No meu bean
public void testando(ValueChangeEvent event) {
for (Integer i = 0; i < 6; i++) {
for (Integer j = 0; j < 7; j++) {
if (validadia[i][j] == null || validadia[i][j] != true) {
diaescala(i + j.toString());
}
}
}
if (event.getPhaseId().equals(PhaseId.ANY_PHASE)) {
event.setPhaseId(PhaseId.UPDATE_MODEL_VALUES);
event.queue();
}
Eu quero pegar o valor da variável validadia que é um vetor de boolean.