Пакет сообщений показывает ключи вместо значения

Для целей тестирования / отладки я хочу показать ключи из пакета сообщений вместо значений в моем приложении jsf. Это возможно?

Пример: мой messages_en.properties имеет следующую запись:

global_today=today   

пример страницы JSF

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

Теперь я хочу видеть ключ на странице "global_today" не сегодня.

1 ответ

Решение

Самый простой способ - переименовать файл свойств, чтобы JSF не нашел ни одного ключа, и вместо "сегодня" вы увидите "global_today".

Если вы все еще хотите увидеть global_today Вы можете сделать следующее:

Допустим, у вас есть следующее в вашем Face-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 "";
            }
        }*/
    }
}
Другие вопросы по тегам