el java常量_如何在EL中引用常量?

小编典典

EL 3.0或更高版本

如果您已经在使用Java EE 7 / EL 3.0,那么@page import还将在EL作用域中导入类常量。

这将在掩护下通过导入,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,如下所示:

或添加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及以上。有几种选择:

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

使用的的 非标 标签库(maven2的回购这里):

这样,可以通过普通的Javabean方法访问它们${constants.FOO}。

使用Javaranch的CCC ,如本文底部所述。

这样,它们也可以通过通常的Javabean方法进行访问${constants.FOO}。

这样,它们也可以通过通常的Javabean方法进行访问#{YourConstants.FOO}。

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

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

2020-06-08

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值