Способность ссылаться на произвольные не связанные с собственностью методы в EL представлена в EL версии 2.2, которая идет рука об руку с Servlet 3.0. Эта функция не существовала в более старых версиях, таких как Servlet 2.5/EL 2.1.
Итак, если вы разворачиваете ваш webapp в контейнер, совместимый с Servlet 3.0, с корневым объявлением web.xml
, совместимым с Servlet 3.0, тогда он будет работать нормально. Однако, если вы развертываете свой webapp в контейнере более старой версии или с web.xml
, который диктует более старую версию, или удалил произвольные файлы JAR с конкретным контейнером более старой версии внутривеб-сервера или даже собственного сервера /lib
, тогда эта функция не будет работать.
При условии, что вы абсолютно уверены, что на тестовом сервере запущен Tomcat 7 и, следовательно, не Tomcat 6 или около того, это может означать, что web.xml
был изменен, чтобы диктовать более старую версию или что ваш webapp или сервер /lib
усеяны произвольными файлами JAR, специфичными для контейнера, такими как jsp-api.jar
, el-api.jar
и т. Д., Которые могут вступать в конфликт с собственными библиотеками контейнера (это часто делается неосведомленными стартерами, чтобы обходить ошибки компиляции, с которыми они сталкиваются в своей среде IDE, которые должны были быть решены differently).
версия Hibernate на локальном и тестовом сервере? Также версия JSF на локальном и в тесте? –
Странно, потому что сообщение верное. «PersistentSet» имеет * метод * 'toArray', а не свойство *. EL фактически пытается получить доступ к свойству 'getToArray()', и результат является исключением. Пожалуйста, покажите нам код, который работает на вашем компьютере (jsf + bean). Использование его в теге дисплея не должно фактически работать AFAIK. – Gamb