Pregunta

Estamos utilizando un h:inputText en una página JSF que está ligado a una propiedad Integer (y por lo tanto puede aceptar null). Cuando no hay un valor escrito en el h:inputText, la forma es la presentación de un 0 en lugar de null. Estamos utilizando Trinidad 1.2.2 y Tomcat 6.0.20 (también probamos con Tomcat 6.0.14 como se lee que esto podría suceder con certains Tomcat versiones).

¿Cómo se hizo y cómo lo puedo resolver?

¿Fue útil?

Solución

Esta "característica" fue resultado de una corrección de errores en EL que fue introducido según Tomcat 6.0.16. Como se indica en el capítulo 1.18.3 del EL especificación , un valor de tipo de número que es null debe ser obligado a 0. Antes de Tomcat 6.0.16 esto era "incorrectamente" ha obligado a una cadena vacía.

Después de todo, una cadena vacía era en realidad mucho más intuitivo que un cero. Los chicos en Tomcat Apache tiene un montón quejas sobre esta corrección de errores, por lo que introdujeron un nuevo ajuste de configuración en el sabor de un argumento de VM según Tomcat 6.0.17 que desactivar esta corrección de errores.

-Dorg.apache.el.parser.COERCE_TO_ZERO=false

he dicho sea de paso pidió un cambio en esta especificación que sólo debería obligar a vaciar / null primitivos tipos a cero y vaciar / null no primitivos tipos java.lang.Number a cadena vacía: JSP EL tema 184 . Ellos no hicieron mucho con él, pero el tema al menos consiguieron una gran cantidad de votos. Quién sabe ... Este comportamiento es por lo menos de hecho bastante molesto porque es no intuitivo.

Ver también:

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top