如何使用资源包从Java中的另一个项目访问属性?

时间:2019-04-18 07:21:07

标签: java maven properties resourcebundle

我当前的问题是,我无法访问一个特定的属性文件,而其他属性可以成功加载。

我的项目结构如下:

- 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(消息或标签)。

也许你可以帮助我。

0 个答案:

没有答案