Messagebundle显示Keys而不是value

时间:2014-05-20 06:30:04

标签: jsf message-bundle

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

实施例: 我的messages_en.properties有以下条目:

global_today=today   

示例jsf page

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

现在我想看到页面中的密钥,“global_today”不是今天。

1 个答案:

答案 0 :(得分:0)

最简单的方法是重命名属性文件,这样JSF就找不到任何密钥了,而不是今天&#39;你会看到??? global_today ???

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

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

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

MyText重命名为MyTextExtender

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

具有以下内容:

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 "";
            }
        }*/
    }
}