#{request} в EL оценивается как ноль в Mojarra 2.3 m02
Я пытаюсь использовать Mojarra 2.3.0-m02. Подтверждение совместимости файла конфигурации JSF Face-config.xml с JSF 2.3 следующим образом.
<?xml version='1.0' encoding='UTF-8'?>
<faces-config version="2.3"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_3.xsd">
</faces-config>
В настоящее время я работаю над проектом пустой игровой площадки, в котором нет ничего, кроме одного файла XHTML и одного или двух управляемых bean-компонентов (CDI). Никаких дополнительных зависимостей, таких как PrimeFaces, OmniFaces.
Следующие
<h:outputText value="contextPath : #{request.contextPath}"/>
оценивается в null
(пустая строка?). Возвращение обратно файла face-config.xml для использования в JSF 2.2 показывает правильный контекстный путь, как и ожидалось.
В чем виновник? (Я использую GlassFish Server 4.1).
Дополнительно:
Я использовал его следующим образом на главном шаблоне проекта.
<ui:param name="contextPath" value="#{request.contextPath}"/>
а затем использовал contextPath
в EL как #{contextPath}
в нескольких местах на протяжении всего приложения.
1 ответ
Во-первых, JSF 2.3 в настоящее время все еще находится в стадии "альфа" (разработки), поэтому время от времени выпускает вехи. Поэтому ожидается, что некоторые вещи еще не закончены или, возможно, просто пропущены. Тем не менее, тестирование выпусков Milestone и сообщение о любых проблемах очень ценится.
Одна из вещей, которая изменилась в JSF 2.3, которая будет первой версией, требующей CDI, заключается в том, что все неявные объекты EL разрешаются через производителей CDI вместо средства распознавания EL. Оказывается, это все еще в стадии разработки. Не только #{request}
отсутствует, но и среди других #{header}
, #{initParam}
, #{param}
и даже #{cc}
а также #{component}
отсутствуют в М02.
Это, вероятно, придет в следующем этапе.