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.
publicvoidbaixaSaldo(ValueChangeEventevent){FacesContextfacesContext=FacesContext.getCurrentInstance();try{log.debug("(Integer)event.getNewValue() "+(Integer)event.getNewValue());if((Integer)event.getNewValue()!=null)conta=delegate.obterSaldoConta(newContaVO((Integer)event.getNewValue()));elseconta.setSaldo(newDouble(20));log.debug("Conta "+conta.getSaldo());}catch(Exceptione){log.error("Erro no momento de baixar Saldo",e);}facesContext.renderResponse();}
alguem tem alguma luz do que estou fazendo errado??
opa eae blz?
cara acho que se vc fizer isso aqui vai resolver o problema
UISelectOne select = (UISelectOne) event.getSource();
String valor = String.valueOf(select.getValue());
vai resolver o problema…porque na verdade vc está sempre pegando o primeiro valor!!! bom acho que é isso!!!.. falow
A
afamorim
Me expressei mau, ele so mostar o primeiro saldo do banco selecionado, na verdade o que não é atualizado é o campo text.
uma coisa que me passou é pegar o campo pelo facesContext e mudar o valor direto nele.
mais como consigo pegar esse component.
valeu pela ajuda
M
mederafael
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!!!
A
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
}
M
mederafael
massa… tinha esqueci que vc pode manipular os ciclos de vida…muito fera…mesmooooo
S
spark
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
}
Isso parece swing.
A
afamorim
Nem me fale, eu que so desenvolvi para web, trabalho desktop so na faculdade mesmo.
E
Eduardo_Negr
Aqui eu explico um "macete" interessante sobre o valuechangelistener >>
Abraço!
.
M
marcuscarvalho1
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.
D
Diabo_Loiro
Muito bom o post.
L
leopose
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
}
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>