小编典典

EL中的方法调用

jsp

当我编写Java
webapp时,通常使用JSTL标签。我认为这些标签很棒,除了让我烦恼的一件事是:虽然表达式语言允许您访问bean属性,但不允许您调用其方法。

在版本1.0中,甚至无法获得字符串的长度或集合中元素的数量。从1.1版开始,已添加fn:length函数,因此您可以执行以下操作:

...
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
...
<c:if test="${fn:length(str) > 10}">
    ...
</c:if>
...

哪一个比以下代码更冗长和丑陋(即恕我直言):

...
<c:if test="${str.length() > 10}">
    ...
</c:if>
...

它似乎表明JSTL
2.0将允许您定义新函数,但是您将需要专门为此目的编写一个类,在其中定义您的(静态)方法,还需要编写一个TLD文件。包含在将要使用这些功能的每个jsp中。

无论您定义自定义函数还是使用其他解决方法,您都需要编写许多其他代码。

我读过某个地方,JCP自愿禁止从表达语言中调用方法。

你们中的任何人都可以帮助我了解JCP为什么对我们这样做吗?


阅读 318

收藏
2020-06-08

共1个答案

小编典典

所需的功能在JSR
245中
定义(更多信息在此处)。如果现在想要,请从UEL项目或其他实现(例如JUEL)中下载。如果您需要等待它成为标准的一部分,它将包含在JEE6中。在那之前…好吧,您已经知道您的选择。

2020-06-08