renan_
Fevereiro 14, 2008, 5:08pm
#1
tenho o seguinte formulário:
<h:form id="novo_deposito">
<fieldset style="width:300px; margin:auto; margin-top:10px; margin-bottom:10px;">
<legend>Novo Depósito</legend>
<p>
Valor Depositado:<h:inputText required="true" value="#{deposito.deposito.valor}" />
</p>
<p>
Data do Deposito:<h:inputText required="true" value="#{deposito.deposito.data}">
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:inputText>
</p>
<p style="text-align:right;">
<a4j:commandButton id="butao" style="text-align:right;" action="#{deposito.create}" oncomplete="alert('Deposito efetuado com sucesso!');" value="Depositar" />
</p>
</fieldset>
</h:form>
Então, quando fazem o deposito, o alert abre e dá tudo certo.
O que eu queria saber é se os valores dos campos dos formularios podem ser zerados assim que o alert for aberto.
a pessoa digita:
valor: 100
data: 10/01/2008
e clica em depositar, entao abre o alert ! porem valor: e data: ficam preenchidos ainda, gostaria de zerá-los… há como?
obrigado!
Eu li a respeito do argumento reRender do a4j:commandButton, que recebe uma lista com os ids dos campos a serem recarregados. Pesquise por isso.
renan_
Fevereiro 14, 2008, 6:00pm
#3
Entao, eu tentei usar o reRender, mas continua com o mesmo valor, se digitei 120 no valor , quando pressiono Depositar vira 120.0 … pois 120.0 é o valor do atributo na sessao relacionada ao inputText …
Alguma sugestão ?
Pergunta idiota: na sua action, vc seta deposito.deposito.valor e deposito.deposito.data para, sei lá, null?
Já tentou colocar quaisquer outros valores? Posta o código da action e do JSP com reRender pra gente ver.
renan_
Fevereiro 14, 2008, 8:09pm
#5
[quote=CintiaDR]Pergunta idiota: na sua action, vc seta deposito.deposito.valor e deposito.deposito.data para, sei lá, null?
Já tentou colocar quaisquer outros valores? Posta o código da action e do JSP com reRender pra gente ver. [/quote]
[code]package br.com.renanmartins;
import java.util.Date;
/*
To change this template, choose Tools | Templates
and open the template in the editor.
*/
/**
*
@author Renan
*/
public class Deposito {
private int depositoID;
private float valor;
private Date data;
public Deposito() {
}
public Deposito(int depositoID, float valor, Date data){
this.depositoID = depositoID;
this.valor = valor;
this.data = data;
}
public int getDepositoID() {
return depositoID;
}
public void setDepositoID(int depositoID) {
this.depositoID = depositoID;
}
public float getValor() {
return valor;
}
public void setValor(float valor) {
this.valor = valor;
}
public Date getData() {
return data;
}
public void setData(Date data) {
this.data = data;
}
}[/code]
Aí está o codigo do meu deposito.java
e aqui meu Deposito controller:
[code]/*
To change this template, choose Tools | Templates
and open the template in the editor.
*/
package br.com.renanmartins.controller;
import br.com.renanmartins.Deposito;
import br.com.renanmartins.dao.DepositoDAO;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
/**
*
@author Renan
*/
public class DepositoC {
private Deposito deposito;
private DataModel model;
public String novoDeposito(){
this.deposito = new Deposito();
return “novo_dep”;
}
public Deposito getDeposito(){
return deposito;
}
public void setDeposito(Deposito deposito){
this.deposito = deposito;
}
public DataModel getTodas() throws Exception{
DepositoDAO dao = new DepositoDAO();
model = new ListDataModel(dao.todosDepositos());
return model;
}
public String create() throws Exception{
DepositoDAO dao = new DepositoDAO();
dao.salvar(deposito);
return “sucesso_ins”;
}
}
[/code]
hmmm… como o reRender funciona ? ele faz com que o bean seja instancializado novamente ?
Renan
Não, creio que não faz nenhuma nova instância. Ele RENDERIZA novamente os campos, ué, com o que está no bean.
public String create() throws Exception{
DepositoDAO dao = new DepositoDAO();
dao.salvar(deposito);
deposito.setData(null);
deposito.setValor(null);
return "sucesso_ins";
}
<h:form id="novo_deposito">
<fieldset style="width:300px; margin:auto; margin-top:10px; margin-bottom:10px;">
<legend>Novo Depósito</legend>
<p>
Valor Depositado:<h:inputText required="true" value="#{deposito.deposito.valor}" id="valor"/>
</p>
<p>
Data do Deposito:<h:inputText required="true" value="#{deposito.deposito.data}" id="data">
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:inputText>
</p>
<p >
<a4j:commandButton id="butao" style="text-align:right;" action="#{deposito.create}" oncomplete="alert('Deposito efetuado com sucesso!');" value="Depositar" reRender="valor, data"/>
</p>
</fieldset>
</h:form>
Eu não testei. Mas deve ser algo assim.