JSTL или JSP 2.0 EL для геттера с аргументом

Как я могу получить доступ к геттеру с параметром, используя JSTL или JSP 2.0 EL?

Я хочу получить доступ к чему-то вроде этого:

public FieldInfo getFieldInfo(String fieldName) {
 ....
}

Я мог бы получить доступ к этому в Struts, используя сопоставленные свойства, но не не знаю, возможно ли это в JSTL или JSP 2.0.

Я пробовал все, но не работает.


person user82164783    schedule 25.04.2011    source источник
comment
Зачем геттеру параметр? Это пахнет рыбой!   -  person CoolBeans    schedule 25.04.2011


Ответы (1)


Передача аргументов метода в EL поддерживается только спецификацией EL в EL 2.2. EL 2.2 по умолчанию поставляется в контейнерах Servlet 3.0/JSP 2.2. Итак, если вы используете контейнер Servlet 3.0 (Tomcat 7, Glassfish 3, JBoss 6 и т. д.), а ваш web.xml объявлен соответствующим спецификации Servlet 3.0, вы должны иметь доступ к нему следующим образом.

${bean.getFieldInfo('fieldName')}

Поскольку вы явно упомянули JSP 2.0, который является частью старой спецификации Servlet 2.4, я предполагаю, что для обновления нет места. Лучше всего заменить метод на

public Map<String, FieldInfo> getFieldInfo() {
    // ...
}

чтобы вы могли получить к нему доступ следующим образом

${bean.fieldInfo.fieldName}

or

${bean.fieldInfo['fieldName']}

or

${bean.fieldInfo[otherBean.fieldName]}
person BalusC    schedule 25.04.2011
comment
Я на сервлете 2.4 и не могу это изменить. Я не могу изменить bean-компонент с помощью метода getFieldInfo и пытался избежать его включения в карту или использования пользовательских тегов/функций для доступа к нему. Нет ли способа получить к нему доступ с параметром? - person user82164783; 25.04.2011
comment
В этом недостаток приверженности старым технологиям. Если бы был другой способ, я бы упомянул об этом в ответе. Однако вы можете предоставить пользовательскую реализацию Map, где вы переопределяете метод get() с какой-то ленивой загрузкой, чтобы вам не нужно было предварительно заполнять всю карту заранее. - person BalusC; 25.04.2011