h:inputText, который связывается со свойством Integer, отправляет значение 0 вместо пустого указателя

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

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

15
задан BalusC 13 November 2015 в 10:44
поделиться

1 ответ

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

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

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

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

См. также:

25
ответ дан 1 December 2019 в 02:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: