当前位置: 首页 > 面试题库 >

在JSF中拥有“常量”类

阳航
2023-03-14
问题内容

我正在使用JSF /
Primefaces构建一个Web应用程序。我需要有一个“常量”类,即由常量组成的类。这些常量主要是导航命令,将在整个应用程序中使用。我这样做的原因是避免临时实例化String。

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

我曾尝试使用@ApplicationScoped和使用Singleton模式(Singleton类),但是由于范围问题,我无法使其正常工作。

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


问题答案:

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

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

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

<h:someComponent ... rendered="#{order.status == 'SHIPPING'}" />

如果您希望使用更多的自我记录代码和运行时检查(否,无法进行编译时检查),则可以考虑使用OmniFaces
<o:importConstants>

<o:importConstants type="com.example.OrderStatus" />
<h:someComponent ... rendered="#{order.status == OrderStatus.SHIPPING}" />

这只是IMO的比较笨拙。但是,运行时检查在开发过程中很好。错字很容易监督。

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



 类似资料:
  • 我需要创建一个拥有该值的迭代器(允许将 trait 对象包装到 ),并将其作为 值(playground)返回: 我得到以下信息: 实际问题是我有另一个< code>TStorage impl(基于flatbuffers并拥有< code>TProduct的vec)返回< code>Rc实例(不是引用),因此我也需要修改trait和这个impl签名。 我确实理解当前迭代器借用vec对象(并且不移动

  • 问题内容: 为什么需要在MySQL 之后而不是MySQL中放置自己创建的列(例如)? 还有没有其他弊端(编写整个定义而不是列名)? 问题答案: 为什么需要在HAVING之后放置自己创建的列(例如“ select 1 as number”),而不是在MySQL中放置WHERE? 被施加之前,被后应用(并且可以在聚集体筛选)。 在一般情况下,你可以在没有这些条款的引用别名,但允许引用在级别别名,和。

  • 本文向大家介绍在React中你有经常使用常量吗?相关面试题,主要包含被问及在React中你有经常使用常量吗?时的应答技巧和注意事项,需要的朋友参考一下 在写react应用的时候,在结合redux 处理react 应用层中的数据层的时候, 会单独写一个actionType文件,这个文件中定义的都是常量,这样写的好处是,单纯的引入字符串内容,容易出错且很难排查,中间做这个文件做一个过渡,就是这种引用常

  • 本文向大家介绍JavaScript中有常量吗?,包括了JavaScript中有常量吗?的使用技巧和注意事项,需要的朋友参考一下 是的,JavaScript中存在常量。const的值保持不变;您无法更改并再次声明。使用const声明创建一个只读引用。 使用const,您可以使用块范围而不是函数范围声明局部变量。假设我们有一个常数a。在声明一个像常量一样的值之后,就不能为其分配新的值。

  • 问题内容: 我有一个定义各种会话属性名称的类,例如 我想在JSP中使用这些常量来测试这些属性的存在,例如: 但是我似乎无法正确理解该语法。另外,为避免在多个地方重复上述相当冗长的测试,我想将结果分配给局部(页面范围)变量,然后引用该变量。我相信我可以用做到这一点,但是我又在努力寻找正确的语法。 更新: 根据下面的建议,我尝试了: 这没有用。因此,我尝试用常量的字面值代替。我还将常量添加到页面的内容

  • 如果关系是双向的,则非所属方必须使用注释的元素来指定所属方的关系字段或属性。 但我不知道到底是什么?