Properties 如何使属性文件可用于struts2中的所有类(不仅仅是操作类)

Properties 如何使属性文件可用于struts2中的所有类(不仅仅是操作类),properties,struts2,Properties,Struts2,我正在使用Struts2框架开发web应用程序。我的任务是访问配置了应用程序特定值的属性文件中的值。我知道可以使用Struts资源包访问它,方法是在Struts.xml文件中定义i18n资源,通过扩展ActionSupport类,可以使用getText方法获得值。这种访问属性的方法适用于操作类或JSP 但是,我想在业务类中获取一个验证的属性。对于ex,有一个属性maxCount=4。业务验证之一是检查其是否超过属性文件中提供的maxCount。我不想自己加载属性。相反,struts应该加载属性,

我正在使用Struts2框架开发web应用程序。我的任务是访问配置了应用程序特定值的属性文件中的值。我知道可以使用Struts资源包访问它,方法是在Struts.xml文件中定义i18n资源,通过扩展ActionSupport类,可以使用getText方法获得值。这种访问属性的方法适用于操作类或JSP

但是,我想在业务类中获取一个验证的属性。对于ex,有一个属性maxCount=4。业务验证之一是检查其是否超过属性文件中提供的maxCount。我不想自己加载属性。相反,struts应该加载属性,我需要从那里获取它。目前,我已经编写了一个静态方法来加载和获取属性,我认为这是错误的做法

你能指引我吗

标记为重复的人注意:

我检查了重复的问题,问题是知道在哪里保存属性文件,以便应用程序可以访问它。我的问题完全不同。我已经在获取属性方面取得了成功,这些属性已经加载到类路径中。我想知道在Struts中实现它的完美和标准方法。我想知道使用i18n的类似方法。我在下面附上了我目前正在使用的代码。我清楚地解释过,我需要的是技术标准方面的指导,而不是如何做到这一点

public class CFAProperties {
private static Properties props = new Properties();

private static Properties load() {
    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
    try {
        props.load(classLoader.getResourceAsStream("resources/cfa-config.properties"));
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return props;
}

public static String getProp(String key) {
    load();
    return props.getProperty(key);
}}

我的回答没有回答您的问题,因为我认为您必须为应用程序参数使用不同的工具

struts中没有预定义的方法来管理应用程序配置文件,尽管您可能会错过使用struts内部消息资源,但这不是一个好方法

我建议在apache中使用轻型框架

  • 它可以从以下位置读取应用程序配置参数:属性文件、XML、系统设置、INI文件
  • 它可以将应用程序参数转换为类型和对象,如:
    integer
    float
    String
    、,。。。您甚至可以通过
    List
  • 表达式受支持,因此您可以使用以下内容:
    user.file=${expr:System.getProperty(“user.home”}/settings.xml
    (根据其他属性更改应用程序设置路径)
  • 您可以构建配置文件

  • 您可以轻松地将其集成到您的应用程序中,并在任何地方访问您的参数。

    i18n资源用于i18n,而不是maxCount-s。因此,您可以自己动手或使用一些库来完成。您的项目是否基于spring?@AleksandrM:我知道i18n的用途不同。我的问题是,是否有类似的方法加载特定于应用程序的属性?这样我就不必加载和调用属性了。我已经有了一个cod:私有静态属性load(){ClassLoader ClassLoader=Thread.currentThread().getContextClassLoader();try{props.load(ClassLoader.getResourceAsStream(“resources/cfa config.properties”);}catch(IOException e){}返回props;}公共静态字符串getProp(字符串键){load();返回props.getProperty(键);}}@AlirezaFattahi:不是。如果我使用了Spring,那么我会通过DI或AOP使用它。@Anand好吧,Spring DI和AOP对你没有帮助。我想提到Spring占位符支持,我将发送一些答案,希望它能帮助你