Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSF2.0:空操作符不';我不能和param一起工作_Java_Jsf 2_El_Param - Fatal编程技术网

Java JSF2.0:空操作符不';我不能和param一起工作

Java JSF2.0:空操作符不';我不能和param一起工作,java,jsf-2,el,param,Java,Jsf 2,El,Param,在文件aPage.xhtml中,我有以下几行: <ui:include rendered="#{not empty param.target}" src="#{param.target}.html" /> <ui:include rendered="#{empty param.target}" src="About.html" /> 不知何故,param.target不被认为是null 除此之外,我还尝试使用==和=运算符,如下所示: <ui:include re

在文件
aPage.xhtml
中,我有以下几行:

<ui:include rendered="#{not empty param.target}" src="#{param.target}.html" />
<ui:include rendered="#{empty param.target}" src="About.html" />
不知何故,
param.target
不被认为是
null

除此之外,我还尝试使用
==
=运算符,如下所示:

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

致以最诚挚的问候

ui:include
未获得
呈现的属性。。。用
包装它在这两种情况下都会对src进行评估,可能是通过文件存在性测试?做

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


param.target
似乎包含
-en
值,这意味着它不是空的,这就是您被引用到
-en.html
页面的原因。。。似乎
param.target
@Daniel:oops,对不起,
-en
不应该在那里。当我在这里发布简化代码时,我没有注意到这一点。尽管NetBeans建议
ui:include
具有
rendered
属性,但您似乎是对的。但是,我仍然使用您的解决方案遇到相同的异常。请尝试在页面中输出param.target。。。它向你展示了什么<代码>
你看到前缀和后缀之间有什么区别吗?我试着在你上面的代码中将
替换为
。当
param.target
为空且不为空时,它会打印出正确的消息。我认为约普·艾根是对的。在这两种情况下都对
src
属性进行了评估。我总是使用
h:panelGroup
包装,它在这里总是有效的。。。我不知道是否正如我告诉你的那样,我试着把
放在
里面,结果效果很好。仅当我将
放入
中时,问题才会出现:)不能使用
+
连接EL中的字符串。我修正了语法。@BalusC,说说为什么我提出的解决方案在这种情况下不起作用?因为它对我来说总是很好…@Daniel:EL在
src
中是在视图构建时评估的,而不是在视图渲染时评估的。只有当
src
指向有效路径时,它才起作用。
<ui:param name="noTarget"  value="About.html" />
<ui:param name="hasTarget" value="#{param.target}.html" />
<ui:include src="#{empty param.target? noTarget : hasTarget}" />
<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>
<ui:include src="#{empty param.target? 'About' : param.target}.html" />