Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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
JSF表达式语言中未定义的变量_Jsf_El_Jsf 2.2 - Fatal编程技术网

JSF表达式语言中未定义的变量

JSF表达式语言中未定义的变量,jsf,el,jsf-2.2,Jsf,El,Jsf 2.2,有没有办法将EL发动机置于“严格”模式? 当我引用EL中不存在的内容时,我希望得到一条错误消息 例如,我希望这会产生一个错误: ... value="#{cc.attr.attrname}" ... 它拼错了。应该是: ... value="#{cc.attrs.attrname}" ... 默认行为似乎是: 忽略cc没有attr成员这一事实,并为值分配一个空字符串 如果有必要的话,我会在玻璃鱼3.1.2.2下使用Mojarra 2.2.9 <class-loader delegate

有没有办法将EL发动机置于“严格”模式?
当我引用EL中不存在的内容时,我希望得到一条错误消息

例如,我希望这会产生一个错误:

... value="#{cc.attr.attrname}" ...
它拼错了。应该是:

... value="#{cc.attrs.attrname}" ...
默认行为似乎是:
忽略
cc
没有
attr
成员这一事实,并为
值分配一个空字符串

如果有必要的话,我会在玻璃鱼3.1.2.2下使用Mojarra 2.2.9

<class-loader delegate="false" />
<property name="useBundledJsf" value="true"/>


EL是在运行时计算的,所以编译器/IDE无法知道某些EL表达式将解析为什么。您的问题在自定义组件的上下文中是有意义的,但是没有什么可以阻止您在代码中添加类似
的内容,这会混淆编译器/IDE。

我理解在编译时无法捕获它。但我希望在运行时计算表达式时出现错误。如果我引用一个
{someBean.nonExistantProperty}
我会得到一个
面异常:类'someBean'没有属性'nonExistantProperty'
。但是,如果我引用
{nonExistantBean.nonExistantProperty}
我没有得到任何迹象表明它无法解析
nonExistantBean
。我没有查看代码,但是当使用
{nonExistantBean.nonExistantProperty}
时,会在上下文映射中搜索键
nonExistingBean
。可能存在空检查,因此在
null
的情况下,表达式的其余部分将被忽略。另一方面,使用
#{someBean.nonExistantProperty}
someBean
已解析为现有对象,其余部分使用反射应用于它。如果发生异常,它将进一步传播到调用堆栈。