Messagebundle显示Keys而不是value



出于测试/调试的目的,我想显示消息包中的键,而不是jsf应用程序中的值。这可能吗?

的例子:我的messages_en。属性有以下条目:

global_today=today   

示例JSF页面

<h:outputLabel id="myId" value="{Msgs['global_today']}"/>   

现在我想在页面中看到键,"global_today"不是今天。

最简单的方法是重命名属性文件,这样JSF就不会找到任何键,而您将看到的不是'today',而是global_today??

如果您仍然想要查看global_today,您可以执行以下操作:

假设你在faces-config.xml中有以下内容

<resource-bundle>
    <base-name>my.package.resources.MyText</base-name>
</resource-bundle>

MyText重命名为MyTextExtender

然后在my.package.resources包中添加MyTextExtender.java

包含以下内容:

public class MyTextExtender extends ResourceBundle {
    public MyTextExtender() {
        setParent(getBundle("my.package.resources.MyText", FacesContext.getCurrentInstance()
                .getViewRoot().getLocale()));
    }
    @Override
    public Enumeration<String> getKeys() {
        return parent.getKeys();
    }
    @Override
    protected Object handleGetObject(String key) {
        return key;
        //The code below will try to turn the annoying ???some_key??? 
        //into "some key" (looks better)
        /*try {
            return parent.getObject(key);
        } catch (MissingResourceException e) {
            if (!StringUtils.isEmpty(key)) {
                logger.error("Missing key: " + key + " in the properties", e);
                return key.replace("_", " ");
            } else {
                logger.error("Key was null???", e);
                return "";
            }
        }*/
    }
}

相关内容

  • 没有找到相关文章

最新更新