h: inputText, который связан со свойством Integer, передает значение 0 вместо нуля - PullRequest
15 голосов
/ 25 июня 2010

Мы используем h:inputText на странице JSF, которая связана со свойством Integer (и, следовательно, может принимать null).Если в h:inputText не записано значение, форма отправляет 0 вместо null.Мы используем Trinidad 1.2.2 и Tomcat 6.0.20 (мы также пробовали с Tomcat 6.0.14, так как читали, что это может произойти с определенными версиями Tomcat).

Как это вызвано и как я могу решить это

1 Ответ

25 голосов
/ 25 июня 2010

Эта "особенность" была результатом исправления в EL, которое было введено согласно Tomcat 6.0.16. В соответствии с главой 1.18.3 спецификации EL значение числового типа, равное null, должно быть приведено к 0. До Tomcat 6.0.16 это было "неправильно" приведено к пустой строке.

В конце концов, пустая строка была намного более интуитивной, чем ноль. Парни из Tomcat в Apache получили множество жалоб на это исправление, поэтому они представили новый параметр конфигурации в виде аргумента виртуальной машины в соответствии с Tomcat 6.0.17, который отключил бы это исправление.

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

Кстати, я запросил изменение в этой спецификации, чтобы оно приводило только к пустым / нулевым примитивным типам к нулю и пустым / нулевым не примитивным java.lang.Number типам в пустую строку: JSP EL выпуск 184 . Они не очень с этим, но вопрос, по крайней мере, получил много голосов. Кто знает ... Такое поведение, по крайней мере, действительно довольно раздражающее, потому что оно не интуитивно понятно.

Смотри также:

...