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

标签 java tomcat jsf-2 null el

我将 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/

相关文章:

java - ExecutorService 和 Runnable

apache - cargo 启动错误

jsf - 关闭 primefaces 对话框并重定向主页

jsf - 如何以编程方式实例化复合组件或标记组件?

jsf - PrimeFaces 面板网格

java - 计算输入中特定字符的出现次数

java - 像普通树一样使用 Vaadin TreeTable

java - 如何指定Maven的模块顺序?

Java 编译给出有关 servlet 库的错误

java - 如何在文件位于 tomcat 服务器的 WEB-INF\classes\uploads 文件夹内的 HTML 页面中绑定(bind)图像