renderRequest на языке выражений

Cn мы сможем использовать язык выражений для renderRequest.getPreferences().getValue(). В настоящее время я использую скрипты на странице jsp, и я хочу избежать скриптлетов.


person user525146    schedule 03.08.2012    source источник


Ответы (1)


Если вы используете EL 2.2 или выше, выражения этой формы должны работать:

${request.getPreferences().getValue('foo', 'some default')}

Как правило, это доступно только на платформах Java EE 6.

В более ранних версиях вы должны иметь возможность использовать такое выражение:

${request.preferences.map['foo']}

Обратите внимание, что это вернет массив . Если вам нужно одно значение, вам может потребоваться использовать уровень косвенности.

Предостережение: ни один из этих кодов не тестировался.

person McDowell    schedule 03.08.2012
comment
Я использую ‹%@ taglib uri=java.sun.com/jsp/jstl/core prefix=c%› ‹%@ taglib uri=java.sun.com/jsp/jstl /fmt prefix=fmt%› и я не думаю, что это 2.2. - person user525146; 04.08.2012
comment
@user525146 user525146 - Если вы используете версию до WebSphere Application Server 8, возможно, у вас ее нет. - person McDowell; 04.08.2012
comment
+1. И подтверждение: работает. У меня есть два дополнения. 1) начиная с версии 2.0 Portlet можно получить доступ к portletPreferences прямо в JSP (при условии, что <portlet:defineObjects /> было объявлено в этом JSP), например: ${portletPreferences.getValue('foo', 'some default')}. Полный список объектов, доступных для JSP sinve версии 2.0, можно увидеть здесь (вместе со сравнением с предыдущей версией): JSR286: тег defineObjects (переменные доступны в JSP). - person informatik01; 09.04.2014
comment
2) Для полноты: чтобы получить конкретное значение, используя второе решение (карту), можно сослаться на возвращаемый массив, например: ${portletPreferences.map['foo'][0]}. Может быть, это и очевидно, но опять же — на всякий случай. - person informatik01; 09.04.2014