Можно ли указать доступ к isAttribute против getAttribute в JSP EL? - PullRequest
1 голос
/ 08 сентября 2010

Наш объект Topic имеет ОБА открытые методы isChannel и getChannel.Граф объектов слишком сложен, чтобы изменить это.Канал имеет тип Integer.

Мы выполняем миграцию с одного сервера приложений на Tomcat.При использовании этого выражения $ {topic.channel.type} в JSP наш текущий сервер приложений находит метод getChannel.Однако Tomcat находит метод isChannel, и мы получаем ошибки, поскольку тип возвращаемого значения - логический, а не канал.Есть ли способ сказать Tomcat, чтобы он предпочитал геттеры по сравнению с булевыми публичными методами?

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

Ответы [ 2 ]

1 голос
/ 08 сентября 2010

К сожалению, вы не можете принудительно вызвать такой метод.

Я проверил спецификации Javabeans и EL, но нигде не указано, какой метод предпочтителен, когда присутствуют оба метода isXXX() и getXXX(). Тем не менее, я согласен с тем, что в данном конкретном случае имеет смысл отдать предпочтение getXXX(). Это также должно быть возможно программно. Я думаю, что стоит приложить усилия, чтобы сообщить об этом как о проблеме с реализацией Tomcat EL.

0 голосов
/ 09 сентября 2010

Теоретически, это должно быть больше проблемой JavaBeans, чем проблемой реализации EL.Вы можете попытаться выяснить, как java.beans.Introspector смотрит на ваш Topic класс.Один из способов сделать это - запустить этот код . Я писал некоторое время назад для вики Struts.В зависимости от сложности вашего класса, возможно, имеет смысл создать явный класс java.beans.BeanInfo, чтобы свойство channel всегда отображалось как Integer.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...