Boa tarde estou iniciando com JSF e está dúvida creio que seja simples.
Eu gostaria de saber porque não consigo recuperar todos os valores preenchidos, ou seja se eu preencho o valor 1 e depois eu preencho o valor 2 eu não consigo recuperar o valor 1, ele só recupera o valor no qual eu estou digitando. Eu gostaria de saber porque não fuciona com ajax.
Se usasse o valueChangeListener funcionaria, porem eu tenho varios campos para preencher e se ficar dando muito submites ficaria muito ruim.
Segue o codigo abaixo.
<h:form>
<h:outputLabel value="Valor 1: " />
<p:inputText id="valor1" value="${meuBean.valor1}">
<f:ajax event="change" render="valor3" listener="#{meuBean.somatorio}"></f:ajax>
</p:inputText>
<h:outputLabel value="Valor 2: " />
<p:inputText id="valor2" value="${meuBean.valor2}">
<f:ajax event="change" render="valor3" listener="#{meuBean.somatorio}"></f:ajax>
</p:inputText>
<h:outputLabel value="Valor 3: " />
<p:inputText id="valor3" value="${meuBean.valor3}"/>
</h:form>
public class MeuBean{
private Long valor1;
private Long valor2;
private Long valor3;
public void somatorio(AjaxBehaviorEvent evt){
if(getValor1() != null && getValor2()!= null){
setValor3(getValor1()+getValor2());
}
}
public Long getValor1() {
return valor1;
}
public void setValor1(Long valor1) {
this.valor1 = valor1;
}
public Long getValor2() {
return valor2;
}
public void setValor2(Long valor2) {
this.valor2 = valor2;
}
public Long getValor3() {
return valor3;
}
public void setValor3(Long valor3) {
this.valor3 = valor3;
}