java - EL 相当于 WAS 8 中的 <%= object.method(parameter) %>?

标签 java jakarta-ee websphere el websphere-8

文档说支持参数,但示例使用 hl#我不知道我在哪里使用 c: 和 $ 而不是来自文档的这个:

<h:inputText value="#{userNumberBean.userNumber('5')}">

我对 EL 中 $ 与 # 的了解是,这与右值和左值有关,我需要进一步解释何时使用 # 样式。我正在寻找类型 $... 的 EL 表达式如何获取参数以及如何使用参数调用非 getter 非 setter,例如从请求上下文中的 bean 获取常量静态字符串。

# 与 $ 相比有何作用?如果我想使用$,如何在EL中使用参数? 我想要迁移到 EL 的 scriptlet 类似于 <%= Constants.CONSTANT %><%= object.method(parameter) %>我想在 EL 中做的事情。

最佳答案

#{} 语法应该在 the Java EE's MVC framework JSF 中使用仅有的。另请参阅Difference between JSP EL, JSF EL and Unified EL 。只需坚持旧 JSP 中的 ${} 语法即可。

关于调用带参数的方法,这是在 Servlet 3.0/EL 2.2 中引入的。 WAS 8 是一个 Servlet 3.0 容器,因此它应该开箱即用地支持它。您只需确保您的 web.xml 被声明为符合 Servlet 3.0 规范版本。否则,容器将以与 web.xml 指示的版本匹配的后备方式运行。正确的 Servlet 3.0 web.xml 声明如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<web-app 
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">

    <!-- Config here. -->

</web-app>

这样 ${object.method(param)} 必须起作用。

在 EL 中引用常量则是另一回事。这将是 introduced在即将推出的 EL 3.0 中,它是 future Java EE 7/Servlet 3.1 的一部分(并且 future 的 WAS 9 或 10 可能会支持它)。有一些自定义标签库风格的解决方案或将它们保存在 Map 中,所有这些都在这个答案中详细解释:How to reference constants in EL?

另请参阅:

关于java - EL 相当于 WAS 8 中的 <%= object.method(parameter) %>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10742174/

相关文章:

java - 如何以编程方式关闭 WAR/EAR

java - 使用 CXF 处理程序捕获堆栈跟踪

java - 找不到 Storm Hbase 配置

java - 如何做 PHP explode (", "), list(), foreach() in Java style

java - 如何让我的 ContainerRequestFilter 在 @ServerEndpoint onOpen 上调用?

java - 调试 Spring 配置

java - 如何配置 EAR 以访问现有的 Websphere 共享库?

java - 如何在@scheduled spring boot 中在fixedDelay和initialDelay中给出分钟?

java - mybatis根据传入的null变量条件执行查询WHERE子句

java - 单个 jar 与多个 jar - 性能优势