我正在开发一个带有jsf2,spring和hibernate的web应用程序。JSF应用程序范围的托管bean注入
我有一个“应用程序为作用域”托管bean(称为“utilsJSF”)与JSF util的方法,如:
- 读取特性文件(使用的getBundle)根据其密钥获得的消息。
- 将一个字符串添加为稍后在视图中显示的facesmessage。
- 等
我注入在我的“基本控制器”这个bean(称为“托管属性”),让我所有的控制器扩展这一项,并且可以访问这些工具。在这里我没有问题。
但是,如何从其他不是“托管的bean”的类使用这些实用程序?
我将解释自己:
我有一个异常层次结构,其中每一个特定的异常类具有访问资源包(属性文件),其中关键是异常的名称和值是消息我要展示给用户。异常构造函数从文件中获取值,将其存储在异常字段中,然后控制器将消息显示为面向消息的用户。
我可以使用“utilsJSF”托管bean显示来自控制器的消息,因为我将它注入到BaseController中。
但我不能注入“utilsJSF”到异常类中以便使用它(因为异常类不是托管的bean)。
解决此问题的最佳解决方案是什么?
非常感谢BalusC。使用静态方法是我的第一个解决方案,它的工作原理。我只是想知道如果有另一种方式。事实上,我尝试将utils方法放在应用程序范围的bean中,只是因为我在网站上阅读它。但我认为应用程序范围的bean用于存储应用程序数据(常量,静态列表等),而不是保存实用程序方法,难道你不这么认为吗?谢谢,我非常感谢你,并阅读你的网页。 (对不起,如果我的英语不是很好,但我来自西班牙)。 – choquero70
如果这个类没有任何状态,那么就没有必要把它变成一个有状态的类。然而,应用程序范围的bean对于将应用程序范围的数据展示到视图中非常有用,例如静态下拉列表。 – BalusC