JSF 2.0: пустой оператор не работает с параметром

В файле aPage.xhtmlУ меня есть следующие строки:

<ui:include rendered="#{not empty param.target}" src="#{param.target}.html" />
<ui:include rendered="#{empty param.target}" src="About.html" />

С учетом приведенных выше строк, я ожидал, что когда я пойду к http://localhost:8080/beta/aPage.xhtml, страница About.html будет включен, так как param.target является null, Однако GlassFish бросил мне следующее исключение:

java.io.FileNotFoundException: http://localhost:8080/beta/.html

Так или иначе, param.target не считался null,

Кроме того, я пытался использовать == а также != операторы как следующие:

<ui:include rendered="#{param.target != null}" src="#{param.target}.html" />
<ui:include rendered="#{param.target == null}" src="About.html" />

Интересно, что на этот раз на консоли GlassFish я не увидел ни одного исключения. Однако в браузере по-прежнему появляется страница с ошибкой, за исключением java.io.FileNotFoundException,

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

ОБНОВИТЬ:

Благодаря подсказке от Joop Eggen я наконец решил проблему со следующими строками:

<ui:param name="noTarget"  value="About.html" />
<ui:param name="hasTarget" value="#{param.target}.html" />
<ui:include src="#{empty param.target? noTarget : hasTarget}" />

С наилучшими пожеланиями

2 ответа

Решение

Src оценивается в обоих случаях, может быть, с помощью теста на существование файла? Делать

<ui:include src="#{empty param.target? 'About' : param.target}.html" />

ui:include не получил rendered атрибут... обернуть его <h:panelGroup

как это

<h:panelGroup rendered="#{not empty param.target}">
   <ui:include  src="#{param.target}.html" />
</h:panelGroup>
<h:panelGroup rendered="#{empty param.target}" >
    <ui:include src="About.html" />
</h:panelGroup>

редактировать

К сожалению, это будет работать только тогда, когда EL в Src точек правильный путь,

причина

EL в ср <ui:include> оценивается во время построения представления, а не во время визуализации представления

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