В файле aPage.xhtml
, у меня есть следующие строки:JSF 2.0: Пустой оператор не работает с парами
<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
.
Я был бы очень признателен, если бы вы могли сказать мне, почему это произошло, и что я должен сделать, чтобы избежать этого.
UPDATE:
Благодаря подсказке от 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}" />
наилучшими пожеланиями
'param.target' кажется держать' -en' значение, что означает его не пусто, и именно поэтому вы refered на '-en.html' странице ... кажется, что проблема с значение, которое удерживается 'param.target' – Daniel
@ Даниэль: oops, извините,' -en' не должно быть там. Я пропустил это, когда я упростил свой код для публикации здесь. –