gpt4 book ai didi

java - ExpressionLanguage (EL) 是否允许使用 NULL 参数调用方法?

转载 作者:行者123 更新时间:2023-11-28 22:09:45 26 4
gpt4 key购买 nike

我将 Tomcat7 与 JSF2 一起使用。我使用像

这样的方法调用
 action="#{bean.method(22)}"

 action="#{bean.method(var)}"

其中 var 是一个 EL 变量。

但是,如果 varnull,或者我尝试调用 #{bean.method(null) 我得到一个 NPE 和方法未被调用。

有什么方法可以将 null 参数传递给 EL 中的方法吗?EL 中是否有 null 的文字?

谢谢

最佳答案

我可以在 Tomcat 7.0.22 上重现此问题,但不能在 Glassfish 3.1.1 上重现。 NPE 堆栈跟踪提示 Apache EL 实现在这里是错误的:

Caused by: java.lang.NullPointerException
at java.lang.Class.isAssignableFrom(Native Method)
at org.apache.el.util.ReflectionUtil.isAssignableFrom(ReflectionUtil.java:299)
at org.apache.el.util.ReflectionUtil.getMethod(ReflectionUtil.java:172)
at org.apache.el.parser.AstValue.invoke(AstValue.java:251)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)

它不应该调用 Class#isAssinableFrom()使用 null 参数。它的javadoc也禁止这样做。我会将它作为错误报告给 apache.org 上的 Tomcat 人员。取决于什么 EL 2.2 spec说,它应该被允许(因此应该跳过 Class#isAssignableFrom() 调用),或者作为 ELException 抛出或其子类之一。

关于java - ExpressionLanguage (EL) 是否允许使用 NULL 参数调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7693508/

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