在JSF中有一个“常量”类

我正在使用JSF / Primefaces构建一个Web应用程序。 我需要一个“常量”类,即一个由常量组成的类。 这些常量主要是将在整个应用程序中使用的导航命令。 我这样做的原因是为了避免在ad-hoc基础上实例化字符串。

我如何实现这一点,使得可以从支持bean和XHTML文件访问常量?

我已经尝试使用@ApplicationScoped并使用Singleton模式(Singleton类)但由于范围问题我无法使用它。

或许我只是使用错误的方法。 欢迎任何想法/建议。

我如何实现这一点,使得可以从支持bean和XHTML文件访问常量?

在支持豆类方面,这显然很容易。 因为它们只是Java类,所以它与“普通”Java方式没有什么不同。 您可以使用enumpublic static final字段。 在观点中,这是一个不同的故事。 直到即将发布的3.0版本,EL确实不支持任何方式的常量。

我建议使用枚举,因为EL在字符串比较中对它们有隐含的支持。 它不执行任何编译时/运行时类型安全检查,但您可以将枚举名称用作字符串。 例如

  

如果您更喜欢自我记录代码和运行时检查(不可以,无法进行编译时检查),那么您可以考虑使用OmniFaces

   

这对IMO来说只是有点笨拙。 但是在开发期间运行时检查很好。 打字错误很容易被监督。

在即将发布的EL 3.0( JSR-341 ,Java EE 7的一部分)中,可以以相同的方式引用常量。 另请参见如何在EL中引用常量? 这只需要以编程方式导入常量,因为没有标准的JSP / Facelets标记。