com.sun.el 包包含什么?

发布于 2024-10-03 17:47:48 字数 249 浏览 1 评论 0原文

这只是 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

变身佩奇 2024-10-10 17:47:48

它包含 Sun 的 实现 javax.el API,由 指定EL规范。此 API 是 Java EE 的一部分,而不是 Java SE。实现者需要提供抽象 API 的具体实现,以便完成所有 API 定义的工作。 Java EE 基本上是一个大型的抽象规范。 Weblogic、Tomcat、Glassfish 等 servlet 容器/应用程序服务器提供了具体的实现。

至于你的实际问题,不,你确实不能使用 + 运算符在 EL 中连接字符串。 EL 中的 + 运算符假定两边都是 Number,对于整数来说是 Long。这是 EL 规范中指定的。

但是,您可以仅使用如下所示的多个表达式来“连接”字符串。

<h:outputText value="#{user.firstName} #{user.lastName}" />

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 a Number, for round numbers that's Long. That's specified in the EL specification.

You can however just use multiple expressions like follows to "concat" strings.

<h:outputText value="#{user.firstName} #{user.lastName}" />
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文