Hibernate Validator com Swing?

7 respostas
javer

Alguém já usou ou sabe como fazer para usar o Hibernate Validator com Java Swing? Já procurei muito e até agora encontrei apenas informações bem vagas, uns exemplos confusos que não dão certo, mas nada muito claro.

Se alguém puder dar alguma dica eu agradeço.

7 Respostas

mister_m

Qual o segredo em usar com Swing? É exatamente da mesma forma que você usa Hibernate Validator em qualquer contexto. O que você quer fazer especificamente?

javer

Quero saber, por exemplo, quais os .jars necessários.

Estou tentando aqui e a todo instante falta classe tal que está em algum .jar mas não sei em qual .jar

Outra coisa que acho horrível é ter que usar o core do hibernate apenas para fazer validação (v3), mas até aí tudo bem, o problema são esses vários jars.

Código de teste:
Usuario item = new Usuario();
item.setNome("FRANCISCO ANTONIO VIEIRA SOUZA DA SILVA MOREIRA"); // validando tamanho maximo de 20 caracteres
item.setCodigo(1);
item.setNivel(3);
item.setSenha("tomate");

InvalidValue[] invalidValues = userValidator.getInvalidValues(item);
for (InvalidValue value : invalidValues) {
    System.out.println("========");
    System.out.println(value);
    System.out.println("message = " + value.getMessage());
    System.out.println("propertyName = " + value.getPropertyName());
    System.out.println("propertyPath = " + value.getPropertyPath());
    System.out.println("value = " + value.getValue());
}
Última exception:
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
	at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69)
	at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:243)
	at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:255)
	at org.hibernate.validator.ClassValidator.<clinit>(ClassValidator.java:53)
	at horus.ui.HorusMainUI.<clinit>(HorusMainUI.java:52)
	at horus.Main.main(Main.java:21)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at com.sun.javaws.Launcher.executeApplication(Launcher.java:1302)
	at com.sun.javaws.Launcher.executeMainClass(Launcher.java:1248)
	at com.sun.javaws.Launcher.doLaunchApp(Launcher.java:1066)
	at com.sun.javaws.Launcher.run(Launcher.java:116)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at com.sun.jnlp.JNLPClassLoader.findClass(JNLPClassLoader.java:257)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClassInternal(Unknown Source
Tenho no projeto:
hibernate-validator
hibernate-commons-annotations
hibernate-core
antlr-2.7
commons-collections-3.1
dom4j
slf4j
jta
sfl4j-jlc
mister_m

javer:
Quero saber, por exemplo, quais os .jars necessários.

sfl4j-jlc

Tira esse e põe o slf4j-jdk14.

javer

Ok, Mister M, obrigado pelas dicas.

Fiz o que você disse e agora tenho uma nova Exception:

03/12/2009 12:29:01 org.hibernate.validator.Version <clinit> INFO: Hibernate Validator 3.1.0.GA 03/12/2009 12:29:01 org.hibernate.annotations.common.Version <clinit> INFO: Hibernate Commons Annotations 3.1.0.GA java.lang.AbstractMethodError: org.slf4j.impl.JDK14LoggerAdapter.trace(Ljava/lang/String;Ljava/lang/Object;)V at org.hibernate.validator.ClassValidator.getDefaultResourceBundle(ClassValidator.java:167) at org.hibernate.validator.ClassValidator.<init>(ClassValidator.java:125) at org.hibernate.validator.ClassValidator.<init>(ClassValidator.java:104) at org.hibernate.validator.ClassValidator.<init>(ClassValidator.java:96) at horus.ui.HorusMainUI.<clinit>(HorusMainUI.java:52) at horus.Main.main(Main.java:21) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.sun.javaws.Launcher.executeApplication(Launcher.java:1302) at com.sun.javaws.Launcher.executeMainClass(Launcher.java:1248) at com.sun.javaws.Launcher.doLaunchApp(Launcher.java:1066) at com.sun.javaws.Launcher.run(Launcher.java:116) at java.lang.Thread.run(Unknown Source)

Eu não entendo isso, se eu baixei o Hibernate Validator 3.1.0 e coloquei TODOS os .jars no projeto, por que não funciona sem faltar classe ou método com assinatura diferente, etc?

javer

Consegui utilizando aquele famoso método tentativa-e-erro, acabei resolvendo com esse arquivo: log4j-1.2.14.jar e slf4j-log4j12-1.4.2.jar, mas como alguém vai advinhar um trosso desse!? Nunca!!

Resultado da validação agora:
log4j:WARN No appenders could be found for logger (org.hibernate.validator.Version).
log4j:WARN Please initialize the log4j system properly.
========
nome Nome deve ter no máximo 20 letras.
message = Nome deve ter no máximo 20 letras.
propertyName = nome
propertyPath = nome
value = FRANCISCO ANTONIO VIEIRA SOUZA DA SILVA MOREIRA
UpTheIrons

Cara, tava justamente procurando sobre isso hj.

Só q queria ver com EclipseLink, pq eu to pensando em “testá-lo”, mas pelo visto, só Hibernate tem isso, daí fica
estranho usar uma coisa e outra (eu acho) *r.

javer

Na verdade estou usando: Swing + TopLink + Hibernate Validator

Estou procurando uma classe genérica para captação de erro em qualquer entidade, se alguém souber como fazer.

Criado 3 de dezembro de 2009
Ultima resposta 5 de dez. de 2009
Respostas 7
Participantes 3