Ir al contenido principal

JSF y el javax.validation.UnexpectedTypeException

Pues nos encontramos aprendiendo una nueva tecnología, y como todo lo nuevo, uno se topa con varias dificultades en el camino... existe un error del cual no encontré mucha información y es por lo que la publico en el blog; el error es

javax.validation.UnexpectedTypeException: No validator could be found for type: java.lang.Integer

Pero igual aplica para java.math.BigDecimal o algunos otros tipos, por el error y el stacktrace uno no da con cuál es el verdadero problema, hasta que me topé con este link de "solid". El cual me dio idea de lo que era, resulta que yo tenía para los campos en los que tenía problemas una anotacion @Size(min=0), me imagino que tendré que investigar cómo utilizar bien esas validaciones, pero quitándolas se resolvió el problema, mientras aprendo a utilizarlas tendré que hacer las validaciones por afuera...

Espero le sirva a alguien...



Comentarios

Robi dijo…
Me pasa lo mismo con esa notación teniendo Long como el tipo.
Quité el @Size y me funcionó correctamente, no sé muy bien por quñe.
Gracias de todos modos.
Unknown dijo…
Solo para saber, porque no creo que sea ya necesario. Yo obtuve el mismo error:

at sia.servicios.sgl.implementacion.SgTipoEspecificoImpl.guardarTipoEspecifico(SgTipoEspecificoImpl.java:57)
Caused by: javax.validation.UnexpectedTypeException: No validator could be found for type: sia.modelo.Usuario

Mis clases están así:

SgTipoEspecifico.java
@Size(max = 5)
@JoinColumn(name = "GENERO", referencedColumnName = "ID")
@ManyToOne
private Usuario genero;

Usuario.java
@Id
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 20)
@Column(name = "ID")
private String id;

En mi caso, el tamaño de la propiedad “genero” de la clase SgTipoEspecifico.java es de máximo 5, pero en mi clase Usuario.java su “id” es de tamaño 20, así que no coinciden y por eso causa el error en la validación.
Lo solucioné quitando la anotación “@Size(max = 5)” de mi clase SgTipoEspecifico.java, pero también se pude cambiarla a “@Size(max = 20)”

Entradas más populares de este blog

OpenSolaris, Clúster de Glassfish y Sun Java Web Server Loadbalancer

Pues estuve necesitando un clúster de Glassfish V2U2 para lo cual encontré rápidamente mucha información en Internet, el que más me gustó fue un blog de Ryan Wilson , pero también necesitaba poner el balanceador de cargas ( loadbalancer ) asi que para eso utilicé la documentación de Glassfish . Aquí el resúmen: Instalar OpenSolaris 200805 y despues realizar lo que les sugieren en los Release Notes , en donde te dicen que actualices su herramienta para instalar paquetes. NOTA: Antes de hacer esto, asegurarse de tener todas las máquinas que van a participar dentro del cluster mapeadas con un DNS, de no ser esto posible sus archivos de hosts deben de tener la información suya y de cada una de las máquinas que van a participar. (Gracias a equipo Telcel) Despues de esto seguir las instrucciones de Ryan . Con esto vas a tener el cluster de glassfish funcionando. Solo que en la configuración del segundo servidor puedes hacer lo siguiente para evitar los pasos 4 al 6 (lo siguiente todo en una...

Reporte Excel con JasperReports

Pues no funcionó el reporte con Jasper, pude hacer que evitara paginar con estas opciones ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); JRXlsExporter exporterXLS = new JRXlsExporter(); exporterXLS.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint); // exporterXLS.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE); exporterXLS.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE); exporterXLS.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE); exporterXLS.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_COLUMNS, Boolean.TRUE); exporterXLS.setParameter(JRXlsExporterParameter.IS_COLLAPSE_ROW_SPAN, Boolean.TRUE); exporterXLS.setParameter(JRXlsExporterParameter.IGNORE_PAGE_MARGINS, Boolean.TRUE); exporterXLS.s...

JQuery Image Upload en Spring MVC

Utilizar el jQuery File Upload de blueimp  en Grails es una delicia. Pero necesito hacer una aplicación grande y no sé lo suficiente como para mantenerla óptima dentro de Grails, así que decidí portarla a Spring MVC, pero no encontré una implementación de esta herramienta en Java que hiciera lo que hace el plugin, que simplemente implementa lo que la herramienta ya hace en otras plataformas. Así que me puse a implementarla y ya quedó. La pueden encontrar en github ... Sólo necesitan clonarla, y ejecutarla con maven: mvn tomcat7:run