EL等价于<%= object.method(parameter)%>在WAS 8?

时间:2012-05-24 17:09:44

标签: java java-ee websphere el websphere-8

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

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

我所知道的所有关于EL中的$ vs#都与rvalue和lvalue有关,我可以在使用#style时进一步解释。我正在寻找typ $ ...的EL表达式如何获取参数以及如何使用参数调用非getter非setter,例如从请求上下文中的bean中获取常量静态字符串。

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

1 个答案:

答案 0 :(得分:4)

#{}语法应仅在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中引用常量是另一回事。这将是即将发布的EL 3.0中的introduced,它是未来Java EE 7 / Servlet 3.1的一部分(可能未来的WAS 9或10将支持它)。有自定义标记库的风格解决方案或将它们保存在Map中,所有这些都在此答案中详细解释:How to reference constants in EL?

另见: