com.sun.el 包包含什么?
这只是 Java 定义的 API,由(例如)服务器实现,还是 JRE 也包含该实现?
问题是,我试图在 JSF 页面上使用“+”连接两个字符串,但它抛出了 NumberFormatException。它似乎试图使用 Long.parseLong() 解析我的字符串。
我很惊讶地在堆栈跟踪中看到这个包,因为我认为这些表达式是 Groovy 表达式。这看起来当然不是 Groovy,而是其他一些 EL。
我正在使用Weblogic服务器。
Is this just an API defined by Java, to be implemented by (say) servers, or the JRE includes the implementation too?
Thing is that I was trying to concatenate two strings using '+' on my JSF page, but it threw NumberFormatException. It seems it was trying to parse my strings using Long.parseLong().
I was surprised to see this package in the stack trace, as I was thought these expressions are Groovy expressions. This certainly doesn't seem to be Groovy but some other EL.
I am using Weblogic server.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
它包含 Sun 的 的实现
javax.el
API,由 指定EL规范。此 API 是 Java EE 的一部分,而不是 Java SE。实现者需要提供抽象 API 的具体实现,以便完成所有 API 定义的工作。 Java EE 基本上是一个大型的抽象规范。 Weblogic、Tomcat、Glassfish 等 servlet 容器/应用程序服务器提供了具体的实现。至于你的实际问题,不,你确实不能使用
+
运算符在 EL 中连接字符串。 EL 中的+
运算符假定两边都是Number
,对于整数来说是Long
。这是 EL 规范中指定的。但是,您可以仅使用如下所示的多个表达式来“连接”字符串。
It contains Sun's implementation of the
javax.el
API which is specified by EL specification. This API is part of Java EE, not Java SE. Implementors are required to provide a concrete implementation of the abstract API so that all the API-definied works will be done. Java EE is basically one large abstract specification. The servletcontainers / applicationservers like Weblogic, Tomcat, Glassfish, etc offers the concrete implementations.As to your actual problem, no, you indeed can't concatenate strings in EL using
+
operator like that. The+
operator in EL assumes the both sides to be aNumber
, for round numbers that'sLong
. That's specified in the EL specification.You can however just use multiple expressions like follows to "concat" strings.