栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在EL中引用常量?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在EL中引用常量?

EL 3.0或更高版本

如果您已经在使用Java EE 7 / EL 3.0,那么

@page import
还将在EL作用域中导入类常量。

    <%@ page import="com.example.YourConstants" %>

这将在掩护下通过导入,

importHandler#importClass()
并以形式提供
${YourConstants.FOO}

请注意,所有

java.lang.*
类都已经隐式导入,并且可以像
${Boolean.TRUE}
and和那样使用
${Integer.MAX_VALUE}
。这仅需要更新的JavaEE 7容器服务器,因为早期版本存在错误。例如,GlassFish 4.0和Tomcat 8.0.0-1x失败,但是GlassFish4.1+和Tomcat 8.0.2x+可以工作。而且,您需要绝对确保声明您
web.xml
的声明符合服务器支持的最新servlet版本。因此
web.xml
,对于声明为符合Servlet2.5或更早版本的,Servlet 3.0+的任何功能都将无法使用。

另请注意,此功能仅在JSP中可用,而在Facelets中不可用。对于JSF +
Facelets,最好的选择是使用OmniFaces

<o:importConstants>
,如下所示:

    <o:importConstants type="com.example.YourConstants" />

或添加

importHandler#importClass()
如下调用的EL上下文侦听器:

    @ManagedBean(eager=true)    @ApplicationScoped    public class Config {        @PostConstruct        public void init() { FacesContext.getCurrentInstance().getApplication().addELContextListener(new ELContextListener() {     @Override     public void contextCreated(ELContextEvent event) {         event.getELContext().getimportHandler().importClass("com.example.YourConstants");     } });        }    }

EL 2.2以上

这是 不是 可以在EL 2.2及以上。有几种选择:

  1. 将它们

    Map<String, Object>
    放在应用程序范围内。在EL中,可以通过
    ${map.key}
    或JavaBean的常规方式访问映射值
    ${map['key.with.dots']}

  2. 使用

    <un:useConstants>
    的的 非标 标签库(maven2的回购这里):

        <%@ taglib uri="http://jakarta.apache.org/taglibs/unstandard-1.0" prefix="un" %>    <un:useConstants className="com.example.YourConstants" var="constants" />

这样,可以通过普通的Javabean方法访问它们

${constants.FOO}

  1. 使用Javaranch的CCC
    <ccc:constantsMap>
    ,如本文底部所述。
        <%@ taglib uri="http://bibeault.org/tld/ccc" prefix="ccc" %>    <ccc:constantsMap className="com.example.YourConstants" var="constants" />

这样,它们也可以通过通常的Javabean方法进行访问

${constants.FOO}

  1. 如果您正在使用JSF2,那么你可以使用
    <o:importConstants>
    的OmniFaces。
        <html ... xmlns:o="http://omnifaces.org/ui">    <o:importConstants type="com.example.YourConstants" />

这样,它们也可以通过通常的Javabean方法进行访问

#{YourConstants.FOO}

  1. 创建一个包装器类,该包装器类通过Javabean风格的getter方法返回它们。

  2. 创建一个自定义的EL解析器,该解析器首先扫描常量的存在,如果不存在,则委托默认的解析器,否则返回常量值。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/466477.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号