Pessoal, gostaria de uma ajuda sobre o seguinte:
Sou iniciante no Java.
Estou usando: Java Web + JSP + Servlet
Estou tentando trazer do BD o campo “fone” formatado ( no BD ele é gravado sem formatação). Quero mostrar no dataTable ele formatado apenas. Vi várias coisas, mas até o momento o que deu certo foi implementar no DAO um método que formata o campo.
Usei este exemplo aqui:
private static String format(String pattern, Object value) throws java.text.ParseException {
MaskFormatter mask;
try {
mask = new MaskFormatter(pattern);
mask.setValueContainsLiteralCharacters(false);
return mask.valueToString(value);
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
public static void main(String[] args) throws java.text.ParseException {
String pattern = "##/###.###/####";
String numeroProcesso = "010000012018";
System.out.println(format(pattern, numeroProcesso));
}
}
No console imprime PERFEITO conforme a máscara.
public ArrayList<JavaBeans> listarContatos() {
// criando objeto para acessar classe javabeans
ArrayList<JavaBeans> contatos = new ArrayList<>();
String read = "select * from contatos order by idcon";
try {
Connection con = conectar();
PreparedStatement pst = con.prepareStatement(read);
ResultSet rs = pst.executeQuery();
while (rs.next()) {
// variaveis de apoio que recebem dados do banco
String idcon = rs.getString(1);
String nome = rs.getString(2);
String pattern = "(##)####-####";
String fone = format(pattern, rs.getString(3));
System.out.println(fone);
//String fone = rs.getString(3);
String email = rs.getString(4);
// populando o arraylist
contatos.add(new JavaBeans(idcon, nome, fone, email));
}
con.close();
return contatos;
} catch (Exception e) {
System.out.println(e);
return null;
}
}
Já quando é enviado à SERVLET e ao listar no JSP(dataTable), tenho o seguinte erro:
HTTP Status 500 - javax.servlet.ServletException: javax.servlet.jsp.JspException: javax.servlet.jsp.JspException: In <formatNumber>, value attribute can not be parsed into java.lang.Number: "(34)9984-0432"
Não entendi erro erro de conversão.
No BD o campo é varchar.
Mostro os dados dessa forma:
<td><c:out value="${contato.fone}" /></td>
Agradeço quem puder clarear esse problema!