JSF表达式语言中未定义的变量
有没有办法将EL发动机置于“严格”模式?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中不存在的内容时,我希望得到一条错误消息 例如,我希望这会产生一个错误:
... 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
已解析为现有对象,其余部分使用反射应用于它。如果发生异常,它将进一步传播到调用堆栈。