0

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

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

global_today=today   

示例 jsf 页面

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

现在我想查看页面中的键,“global_today”不是今天。

4

1 回答 1

0

最简单的方法是重命名属性文件,这样 JSF 将找不到任何键,而您将看到 ???global_today??? 而不是“今天”

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

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

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

重命名MyTextMyTextExtender

然后在MyTextExtender.javamy.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 "";
            }
        }*/
    }
}
于 2014-05-20T07:50:11.377 回答