java.util.properties的Getters / Setters

时间:2011-10-11 09:01:09

标签: java xml jsp setter getter

我希望通过jsp以HTML / XML显示属性。像:

${MyClass.properties.propertieOne}

我创建了扩展的属性类MProperties,但是如何在我的属性中为该类创建getter?

BR Kolesar

4 个答案:

答案 0 :(得分:0)

您可以在store(Writer writer, String comments)课程中使用Properties方法。将您的属性写入StringWriter并使用其中的String在HTML上打印。

答案 1 :(得分:0)

${yourObject.properties.propertyOne}有效。 Properties extends Hashtable implement Map${map.key}为您提供该密钥下的值。但是你不应该使用JSP中的setter,因此这仅用于显示目的。

但您无法直接从静态字段访问它。您必须将其添加到某个上下文 - 请求或应用程序。例如,在ServletContextListener.contextInitialized(..)

servletContext.addAttribute("yourProperties", MyClass.properties);

(当然,你必须在web.xml中映射<listener>

答案 2 :(得分:0)

如果您延长Properties,您可能确切地知道您想要拥有哪些字段。在这种情况下,最好只创建一个包含这些字段的POJO(简单对象)和适当的getter(以及你想要的setter和/或构造函数)。如果你以某种方式需要Properties的动态 - (?),请忽略这个答案。

答案 3 :(得分:0)

您可以使用

等构造函数创建类来处理属性
private Properties props = null;

    private MyProperties() throws IOException {

        FileInputStream propFile = new FileInputStream(FULL_PATH);
        props = new Properties(System.getProperties());
        props.load(propFile);

        RegistryManager rm = RegistryManager.singleton();
        rm.addRegistry("MyProperty", this);
    }

public static MyProperties Singelton() {
        synchronized (MyProperties.class) {
            if (theInstance == null) {
                try {
                    theInstance = new MyProperties();
                } catch (IOException e) {
                    throw new MissingResourceException("Unable to load property file \"" + FULL_PATH + "\"", MyProperties.class.getName(),
                            PROPERTIES_FILENAME);
                }
            }
        }
        return theInstance;
    }

并通过一种方法获取属性,如

public static String getProperty(String propertyName) {
        String value = Singelton().props.getProperty(propertyName);
        if (value == null) {
            LOGGER.warning("propertyName (" + propertyName + ") not found in property file (" + FULL_PATH + ")");
        }

        return value;
    }

最后在代码中你只能打电话

String desiredProperty = MyProperties.getProperty("propertyKey");

缺少一些代码,有些代码可能不需要但你应该知道这是否是你想做的......