- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个现有的 Java/JSF 网站,屏幕上的所有文本都来自属性文件,通过
对于其中的运行时可配置子集,我想从其他地方(通过 Web 服务的 CMS)提取字符串。查看 ResourceBundle 类,它似乎有一个基础设施,用于接近此的东西,并委托(delegate)给父 ResourceBundle。
我想要这样的东西
public class Applicaltion extends ResourceBundle{
@Override
protected Object handleGetObject(String key) {
if(overridenKey(key)){
return overridedValue(key);
}
return null; // ResourceBundle.getObject will delegate to parent
// if we return null
}
}
我试过这个并且 parent 为 null,我认为这更多地用于 default -> en -> en_GB 的情况。
我正在考虑一个不太吸引人的选项,即让属性文件使用与自定义资源包不同的名称,然后从 CustomResourceBundle.handleGetObject(key) 中委派 ResourceBundle.getBundle(PROPERTY_FILE_NAME).getString(key) 的完整堆栈.
有什么更好的主意吗?
最佳答案
我最终通过检查我们是否有一个覆盖值来解决这个问题,如果我们返回那个值,否则委托(delegate)给标准资源包
public class UILabels extends ResourceBundle {
private ResourceBundle getFileResources(){
return ResourceBundle.getBundle("com.example.web.UILabelsFile", this.getLocale());
}
public Enumeration<String> getKeys() {
return getFileResources().getKeys();
}
protected Object handleGetObject(String key) {
if(overrideValue(key)){
return getOverridenValue(key);
}
return getFileResources().getObject(key);
}
}
请注意名称类中的细微差别是 UILabels,所有客户端将使用该文件是 UILabelsFile,因此 ResourceBundle 加载器不会递归。
关于java - 如何从 PropertyResourceBundle 覆盖一些资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/653682/
我想通过 i18n 的 PropertyResourceBundle 使用属性文件。我当前的问题是我拥有的文件上的键可以包含空格,例如: key number 1 = value number 1 k
我有一个现有的 Java/JSF 网站,屏幕上的所有文本都来自属性文件,通过 从应用程序中提取文本。属性。 对于其中的运行时可配置子集,我想从其他地方(通过 Web 服务的 CMS)提取字符串。查看
尝试使用以下代码在 Java 8 中加载 TestResourceBundle.properties 文件时: ResourceBundle resources = ResourceBundle.ge
我在 utf-8 编码文件中有多个 messages.properties 文件(messages_en_US.properties、messages_fr.properties,...)。在这些属性
关于下面这个错误是什么有什么想法吗??? JSP 无法找到包 java.util.PropertyResourceBundle, key el.convert 的资源 我在使用 jsp 时遇到此问题。
我收到错误,但不知道问题的原因是什么? java.util.PropertyResourceBundle, key connect_not_allowed Nested exception:
我使用 Eclipse Oxygen.2 Release (4.7.2) 并尝试开发一个笔和纸角色创建程序作为练习来学习使用不同的文件,如 xml 和属性。 我的 ResBundle.properti
我们有一个使用 .properties 来存储语言翻译的应用程序。我们尝试使用 PropertyResourceBundle 和 PropertiesConfiguration(独立)访问它们。在本地
我不知道发生了什么。 这是我的 Titles_en_US.properties 文件: WEBSITE.TITLE = Hello World FOOTER.DISCLAIME
我已经安装了 IBM MQ 7.5.0.5 客户端,并将 C:\Program Files (x86)\IBM\WebSphere MQ\java\lib 下的所有 jar 添加到我的 Java 应用
我是一名优秀的程序员,十分优秀!