gpt4 book ai didi

jsf - 怎么去掉周围???在 bundle 中找不到消息时

转载 作者:行者123 更新时间:2023-12-04 07:43:49 24 4
gpt4 key购买 nike

在 JSF 2.0 中,如果在消息包中没有找到消息,那么默认情况下, key 被 ??? 包围。 .这是开发过程中非常有用的提示。但是,在我的特殊情况下,我真的很喜欢那些 ???不在场。我更喜欢只呈现 key 。

例如。当我做

#{msg.hello}

并且键 'hello' 不存在,然后页面显示

???hello???



但我想展示裸键

hello



消息包加载到 JSF 页面中,如下所示:
<f:loadBundle basename="resources.text" var="msg" />
<f:loadBundle>标签似乎没有一个属性来操纵从该包中检索值的方式。我应该覆盖某个类还是如何拦截从包中检索消息的方式?

我发现了一篇非常有趣的文章: Context Sensitive Resource Bundle entries in JavaServer Faces applications – going beyond plain language, region & variant locales .但是,就我而言,我只想省略 ??? .我认为这个解决方案相当复杂。我怎样才能实现它?

最佳答案

basename可以点个全值 ResourceBundle 类(class)。例如。

<f:loadBundle basename="resources.Text" var="msg" />


package resources;

public class Text extends ResourceBundle {

public Text() {
setParent(getBundle("resources.text", FacesContext.getCurrentInstance().getViewRoot().getLocale()));
}

@Override
public Enumeration<String> getKeys() {
return parent.getKeys();
}

@Override
protected Object handleGetObject(String key) {
return parent.getObject(key);
}

}

您可以覆盖 handleGetObject 中的包消息处理. JSF 默认(按规范)调用 getObject() , 捕获 MissingResourceException并返回 "???" + key + "???"被抓的时候。你可以用不同的方式来做。
@Override
protected Object handleGetObject(String key) {
try {
return parent.getObject(key);
} catch (MissingResourceException e) {
return key;
}
}

关于jsf - 怎么去掉周围???在 bundle 中找不到消息时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6451215/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com