ExpressionLanguage (EL) 是否允许使用 NULL 参数调用方法?
我使用 Tomcat7 和 JSF2。 方法调用
action="#{bean.method(22)}"
我使用类似or 的
action="#{bean.method(var)}"
,其中 var
是 EL 变量。
但是,如果 var
为 null
,或者我尝试调用 #{bean.method(null)
,我会得到一个 NPE,并且该方法不是叫。
有没有办法将 null
参数传递给 EL 中的方法? EL 中有 null
的文字吗?
谢谢
I use Tomcat7 with JSF2. I use method invocations like
action="#{bean.method(22)}"
or
action="#{bean.method(var)}"
where var
is an EL variable.
However, if var
is null
, or i try to call #{bean.method(null)
i get an NPE and the method is not called.
Is there any way to pass a null
argument to a method in EL?
Is there a literal for null
in EL?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我可以在 Tomcat 7.0.22 上重现此问题,但不能在 Glassfish 3.1.1 上重现。 NPE 堆栈跟踪提示 Apache EL 实现在这里是错误的:
它不应该调用
Class#isAssinableFrom()
带有null
参数。它的 javadoc< /a> 也禁止这样做。我会将其作为错误报告给 apache.org 上的 Tomcat 人员。根据 EL 2.2 规范 的规定,应该允许(因此Class#isAssignableFrom()
调用应该被跳过),或者作为ELException
或其子类之一。I can reproduce this issue on Tomcat 7.0.22, but not on Glassfish 3.1.1. The NPE stacktrace hints that the Apache EL implementation is wrong here:
It shouldn't have called
Class#isAssinableFrom()
with anull
argument. Its javadoc also forbids that. I'd report it as a bug to the Tomcat guys over there at apache.org. Depending on what the EL 2.2 spec says, it should either been allowed (and thus theClass#isAssignableFrom()
call should have been skipped), or been thrown as anELException
or one of its subclasses.如果可能(您可以访问 bean 方法),您可以将方法从 int 更改为 Integer,然后在设置之前检查是否为 null。
If possible (you have access to the bean method), you could change your method from int to Integer and then do a check for null before setting it.
我在 Apache
7.0.47
上遇到了同样的问题。更新到7.0.56
后它消失了。所以这可能是一个错误,尽管我找不到任何问题跟踪器条目。
I had the same issue on Apache
7.0.47
. It disappeared after a update to7.0.56
.So it probably was a bug, although I couldn't find any issue tracker entry.