2012-03-27 48 views
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」); return resourceBundle; }

但該方法的結果爲空。

任何想法或指導將不勝感激。

+1

'#{message}'到底有多註冊? – BalusC 2012-03-27 04:39:14

+0

在文件組件中定義。XML: <芯:資源裝載機> \t \t <芯:捆名> \t \t \t 消息 \t \t \t \t Thinhbk 2012-03-27 06:08:41

回答

0

發現問題,第三種方法有效。

這是因爲我在我的項目中使用了2個資源包,一個是消息(通用),另一個是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中,並刪除co​​re:resource-loader中的名稱即可。

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

就是這樣。

+0

我不確定這是否是根本原因,Seam和EJB 3之間的互操作有問題? – Thinhbk 2012-03-27 07:51:02