gpt4 book ai didi

java - JSF 2.0 : Empty operator doesn't work with param

转载 作者:搜寻专家 更新时间:2023-10-31 19:48:21 27 4
gpt4 key购买 nike

在文件 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.targetnull。但是,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}" />

最好的问候

最佳答案

在这两种情况下都对 src 进行了评估,也许是通过文件存在性测试?做

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

关于java - JSF 2.0 : Empty operator doesn't work with param,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10811671/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com