我当前的问题是,我无法访问一个特定的属性文件,而其他属性可以成功加载。
我的项目结构如下:
- project1
- src
- main
- resources
- prj1res
- messages_en + messages_de + labels_en + labels_de.properties
- project2
- src
- main
- resources
- messages_en + messages_de + labels_en + labels_de.properties
project1 / src / main / resources / prj1res中的属性仅用于此项目。 project2中的属性也用于其他几个项目(project1,project *,...)。
我正在使用Eclipse(带有Maven的Java)并将我的应用程序作为* .ear部署到WebLogic(project1.ear->在project1.war和project2.jar中)。
我的faces-config.xml(项目1)如下:
<application>
<locale-config>
<default-locale>en</default-locale>
<supported-locale>de</supported-locale>
</locale-config>
<resource-bundle>
<base-name>prj1res.labels</base-name>
<var>label</var>
</resource-bundle>
<resource-bundle>
<base-name>prj1res.messages</base-name>
<var>msg</var>
</resource-bundle>
<resource-bundle>
<base-name>labels</base-name>
<var>clabel</var>
</resource-bundle>
<resource-bundle>
<base-name>messages</base-name>
<var>cmsg</var>
</resource-bundle>
</application>
在project1中,加载正确的属性文件没有问题。对于project2,我删除了messages.properties和labels.properties进行测试。关键是(对于project2)找到了语言环境“ de”或“ en”的所有labels _ *。properties(通过ResourceBundle从bean调用或通过clabel从xhtml页面调用),但是未找到messages_de.properties文件。>
如果我使用英语,一切正常,但是如果我改成德文(de),则标签翻译正确,但消息未正确翻译。我收到MissingResourceException:找不到基本名称消息的捆绑软件,语言环境de。
但是为什么正确加载了labels_de.properties?在同一包中。
在调试中,我到达了这一点:
public ResourceBundle getResourceBundle() {
return ResourceBundle.getBundle(resourceBundleName, FacesContext
.getCurrentInstance().getViewRoot().getLocale());
}
FacesContext ... getLocale()此时显示正确的语言(de或en)和resourceBundleName(消息或标签)。
也许你可以帮助我。