Как получить параметр init в JSF 1x, используя EL

У меня есть контекстный параметр следующим образом:

  <context-param>
    <param-name>myInitParam</param-name>
    <param-value>myValue</param-value>
  </context-param>

я хочу получить параметр инициализации в JSF 1x (точная версия 1.1.02) следующим образом:

<object>
<param name="HTTPPort" value="#{initParam.myInitParam}" />

но я получаю ошибку компилятора в JSP:

the attributes for a standard action or an uninterpreted tag cannot be deferred expressions

Посоветуйте, пожалуйста, как получить параметр init в JSF 1x и какова ссылка на EL, используемый в JSF 1x.

1 ответ

Решение

Переменная EL верна, но вы не можете использовать отложенный EL #{} в тексте шаблона в устаревшей JSP, которая является технологией представления по умолчанию в JSF 1.x. Это именно то, что сообщение об ошибке пытается сказать вам.

Вам нужно распечатать его с помощью <h:outputText>,

<f:verbatim><param name="HTTPPort" value="</f:verbatim><h:outputText value="#{initParam.myInitParam}" /><f:verbatim>" /></f:verbatim>

(обратите внимание, что я предполагаю, что вы уже излучали обычный HTML, используя <f:verbatim> )

Да, это одна из линий уродства, но это является выгодой от использования JSP и одной из основных причин, по которой был введен Facelets.

Смотрите также:

Другие вопросы по тегам