0

我遇到了关于在 Seam 2.2 应用程序的服务器端加载 ResourceBundle 的问题。

在客户端(JSF)中,可以使用资源包:

<f:facet name="header">#{message['addTest.header.add']}</f:facet>

但在服务器端,没有办法使用资源包。

我尝试了以下方法,但没有解决方案有效。

  • 添加到 StatusMessage:StatusMessage.addFromResourceBundle(serverity.ERROR, "key_string");
  • 在这个问题中使用注入:Use message bundle in Java class with Seam
  • 加载资源包:

    私有 java.util.ResourceBundle getResourceBundle() { org.jboss.seam.core.ResourceLoader resourceLoader = org.jboss.seam.core.ResourceLoader .instance(); java.util.ResourceBundle resourceBundle = resourceLoader.loadBundle("message"); 返回资源包;}

但此方法的结果为空。

任何想法或指导将不胜感激。

4

1 回答 1

0

发现问题,第三种方法有效。

这是因为我在我的项目中使用了2个资源包,一个是messages(common),一个是myMessage。

一开始在 components.xml 文件中定义资源包时,我只定义了 myMessage 资源包。

<core:resource-loader bundle-names="my">
        <core:bundle-names>
            <value>myMessage</value>
        </core:bundle-names>
</core:resource-loader>

在文件 faces-config.xml 中,我定义了语言支持。

<application>
        <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
        <locale-config>
            <default-locale>en</default-locale>
            <supported-locale>bg</supported-locale>
            <supported-locale>de</supported-locale>
            <supported-locale>en</supported-locale>
            <supported-locale>fr</supported-locale>
            <supported-locale>tr</supported-locale>
            <supported-locale>ja</supported-locale>
        </locale-config>

        <message-bundle>messages</message-bundle>

    </application>

而当使用第三种方式时,它只返回消息包。

要解决此问题,只需将消息包添加到文件 components.xml 中并删除 core:resource-loader 中的名称。

<core:resource-loader>
        <core:bundle-names>
            <value>messages</value>
            <value>myMessage</value>
        </core:bundle-names>
</core:resource-loader>

就是这样。

于 2012-03-27T07:43:16.427 回答