Salvar no BD sem mascara

10 respostas
well

Olá pessoal, to com uma dúvida aqui pois fiz o sistema legal validando, ai o cliente falou quero que coloque mascara nos campos… até ai blz peguei um js e fiz, o problema que nao quero salva no bd com a mascara. o que faço para remover a mascara antes de salvar??

Crio um metodo no dao?

Vlw

10 Respostas

drsmachado

well:
Olá pessoal, to com uma dúvida aqui pois fiz o sistema legal validando, ai o cliente falou quero que coloque mascara nos campos… até ai blz peguei um js e fiz, o problema que nao quero salva no bd com a mascara. o que faço para remover a mascara antes de salvar??

Crio um metodo no dao?

Vlw


Ta doidão?
DAO não implementa lógica de negócios.
Das duas uma, ou implementa na própria página, com um js que remova e depois submeta ou no controller.

well

viajei… no controller que Quiz dizer :slight_smile: … rsrsr… vc tem um código ai para eu dar uma olhada… teria muito problema salvar tudo como string no bd… ou isso nao é aconselhável.

drsmachado

Isso é muito relativo. Eu prefiro salvar no tipo mais próximo do real. String eu transformo em varchar, Integer em int, Long em bigint e assim por diante.
Exemplo, puts, aqui não tenho.

Rodrigo_Sasaki

Remover uma máscara pode ser tão simples quanto isso:

JavaScriptfunction removerMascara(valor){ return valor.replace(/\D/g, ""); }Javapublic String removerMascara(String valor){ return valor.replaceAll("\\D", ""); }

Rodrigo_Sasaki

Eu tenho uma opinião sobre isso, não sei se é comum.

Eu gosto de guardar como número aquilo que é usado para operações matemáticas. um número de telefone ou um CPF por exemplo, eu prefiro guardar como varchar.

A

Sim, é uma péssima prática!

Gravando tudo como string você vincula um dado com seu formato.
Num campo com a data de nascimento, por exemplo, poderia ter valores como: 01/01/1980, ano passado, 1960-01-20, não sei

Utilizando o tipo de dado correto você ajuda a garantir a consistência da informação.

Deixe o formato para a visualização.

Ah, e nos seus beans, também não utilize tudo como string.

well

i que doidera estava lendo um outro post que vc respondeu digaoneves… sem querer que ser chato…
mais como faço para passar esse metodo em java na hora de salvar…

public String removerMascara(String valor){  
    return valor.replaceAll("\\D", "");  
}

meu metodo de salvar no Vraptor é assim

@Post @Path("/paciente/adiciona") public void adiciona(Paciente paciente) { dao.adiciona(paciente); result.include("municipios", municipioDAO.lista()); result.include("ufs", ufDAO.lista()); result.redirectTo(PacientesController.class).adiciona(); }

vlw obrigado

Rodrigo_Sasaki

well:
i que doidera estava lendo um outro post que vc respondeu digaoneves… sem querer que ser chato…
mais como faço para passar esse metodo em java na hora de salvar…

como assim passar o método ?

well

Não basta eu colocar o metoto removerMascara no meu controller, pois quando salvo nao acontece nada… ele nao tem que saber que campo em quero remover a mascara?

Rodrigo_Sasaki
@Post
@Path("/paciente/adiciona")
public void adiciona(Paciente paciente) {
    removerMascarasPaciente(paciente);
    dao.adiciona(paciente);
    result.include("municipios", municipioDAO.lista());
    result.include("ufs", ufDAO.lista());
    result.redirectTo(PacientesController.class).adiciona();
}

public void removerMascarasPaciente(Paciente paciente){
    paciente.setTelefone(removerMascara(paciente.getTelefone())):
    // e por  vai
}

public String removerMascara(String valor){    
    return valor.replaceAll("\\D", "");    
}
é só uma idéia, talvez exista um jeito melhor de implementar.
Criado 29 de maio de 2012
Ultima resposta 29 de mai. de 2012
Respostas 10
Participantes 4