Bom dia.
Faz alguns meses que aprendi em java a formatar um JTextField, onde o usuário
digitava uma vírgula e o banco recebia um ponto.
Ele digitava a vírgula e não digitava números em campo com máscara de vírgula.
Mas agora estou tentando fazer isso em JSP e não sei como começar,
pois não é a mesma coisa pegar o campo de texto do html e fazer isso.
Como posso proceder?
O código java que eu utilizo pra isso é:
DecimalFormat formatCampo = new DecimalFormat("##,#00.0"); // preenche automaticamente c/ ponto ou vírgula
field = new JFormattedTextField(formatCampo);
field.setHorizontalAlignment(JTextField.RIGHT);
e no banco de dados:
String StrIdade;
float idade;
StrIdade = field.getText();
StrIdade = StrIdade.replace(",", "."); // faz com que na hora de inserir mude para um ponto
try {
idade = Float.valueOf(StrIdade);
} catch(NumberFormatException nfex) {
JOptionPane.showMessageDialog(null, "Preencha a idade corretamente!", "Erro", JOptionPane.ERROR_MESSAGE);
return;
}
Obrigado.
Puka
Outubro 8, 2008, 9:42am
#2
eu tenho scripts para valores R$ 1.000,00
//Formata n?mero tipo moeda usando o evento onKeyDown
function Formata(campo,tammax,teclapres,decimal) {
var tecla = teclapres.keyCode;
vr = Limpar(campo.value,"0123456789");
tam = vr.length;
dec=decimal
if (tam < tammax && tecla != 8){
tam = vr.length + 1 ;
}
if (tecla == 8 ) {
tam = tam - 1 ;
}
if ( tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 ) {
if ( tam <= dec ) {
campo.value = vr ;
}
if ( (tam > dec) && (tam <= 5) ) {
campo.value = vr.substr( 0, tam - 2 ) + "," + vr.substr( tam - dec, tam ) ;
}
if ( (tam >= 6) && (tam <= 8) ) {
campo.value = vr.substr( 0, tam - 5 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam ) ;
}
if ( (tam >= 9) && (tam <= 11) ) {
campo.value = vr.substr( 0, tam - 8 ) + "." + vr.substr( tam - 8, 3 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam ) ;
}
if ( (tam >= 12) && (tam <= 14) ) {
campo.value = vr.substr( 0, tam - 11 ) + "." + vr.substr( tam - 11, 3 ) + "." + vr.substr( tam - 8, 3 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam ) ;
}
if ( (tam >= 15) && (tam <= 17) ) {
campo.value = vr.substr( 0, tam - 14 ) + "." + vr.substr( tam - 14, 3 ) + "." + vr.substr( tam - 11, 3 ) + "." + vr.substr( tam - 8, 3 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - 2, tam ) ;
}
}
}
//bloqueia teclas
function Tecla(e) {
if (document.all) // Internet Explorer
var tecla = event.keyCode;
else if(document.layers) // Nestcape
var tecla = e.which;
if (tecla > 47 && tecla < 58) // numeros de 0 a 9
return true;
else {
if (tecla != 8) // backspace
event.keyCode = 0;
else
return true;
}
}
// retira caracteres invalidos da string
function Limpar(valor, validos) {
var result = "";
var aux;
for (var i=0; i < valor.length; i++) {
aux = validos.indexOf(valor.substring(i, i+1));
if (aux>=0) {
result += aux;
}
}
return result;
}
<h:outputText value="Valor do Bem:"/>
<x:inputText id="valor"
value="#{CadBem.form.bem.vlbem}" styleClass="basic"
converter="tjro.jsf.BigDecimal"
displayValueOnly="#{!CadBem.form.editavel}"
onkeydown="Formata(this,20,event,2)" onkeypress="return Tecla(event)"
/>
Pode adaptar para o formato que deseja.
Eu uso o NetBeans.
Mostra um erro nas últimas linhas.
Elas são para o xml?
Eu procuro algo mais simples mas obrigado pela ajuda.
Puka
Outubro 10, 2008, 7:28am
#4
desculpe
essas linhas são de jsf
# <h:outputText value="Valor do Bem:"/>
# <x:inputText id="valor"
# value="#{CadBem.form.bem.vlbem}" styleClass="basic"
# converter="tjro.jsf.BigDecimal"
# displayValueOnly="#{!CadBem.form.editavel}"
# onkeydown="Formata(this,20,event,2)" onkeypress="return Tecla(event)"
# />
você pode usar em formulários html, em campos de texto
dark123
Outubro 10, 2008, 8:05am
#5
Mas aí gera um NullPointerException, quando clico em cadastrar.
dark123
Outubro 16, 2008, 6:00pm
#6
Não tem como fazer isso em JSP?