在文件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
is 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}" />
最好的祝福