4

私は(学習中...)Struts 1.3を使用してMVC Webアプリケーションを構築しています。わかりやすくするために、複数の<message-resources>要素を含めたいと思います - メッセージをアプリケーションの特定のモジュールのファイルに分けます。

公式のApache ドキュメントには次のように記載されています。

Web アプリケーションに1 つ以上の<message-resources>要素を定義できます。モジュールは独自のリソース バンドルを定義できます。アプリケーションで異なるバンドルを同時に使用できます。目的のバンドルを指定するには、'key' 属性を使用します。

ただし、複数の要素を含めると、キーのメッセージが欠落していることを示す例外が JSP によって発生します。

SEVERE: Servlet.service() for servlet jsp threw exception javax.servlet.jsp.JspException: Missing message for key "label.username" in bundle "(default bundle)" for locale en_GB
at org.apache.struts.taglib.bean.MessageTag.doStartTag(MessageTag.java:233)
at org.apache.jsp.index_jsp._jspx_meth_bean_005fmessage_005f0(index_jsp.java:197)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:107) ~~~snip~~~

これは XML です。

<struts-config>
    ~~~snip~~~
    <message-resources parameter="resources.DefaultResource"/>
    <message-resources parameter="resources.Registration"/>    
</struts-config>

2 番目の「登録」リソースがなければ、例外はスローされません。「label.username」は「DefaultResource」のみに存在します。

どうもありがとう。

4

3 に答える 3

11

この struts-config では、2 番目のメッセージ リソース要素は最初の要素と同じ (デフォルト) キーを使用するため、最初の要素を完全に置き換えます。各バンドルに異なるキーを割り当て、bean:message タグでバンドル属性を使用して、使用するバンドルを示す必要があります。

<struts-config>
    ~~~snip~~~
    <message-resources parameter="resources.DefaultResource"/>
    <message-resources parameter="resources.Registration" key="registrationBundle"/>    
</struts-config>

および JSP で:

Message from the default bundle : <bean:message key="my.first.key"/>
Message from the registration bundle : <bean:message key="my.second.key" bundle="registrationBundle"/>
于 2011-01-21T17:02:16.640 に答える
2

答えは、質問に含めたドキュメント スニペットにあります。複数のバンドルがある場合は、

アプリケーションで異なるバンドルを同時に使用できます。目的のバンドルを指定するには、'key' 属性を使用します。

http://struts.apache.org/1.3.10/struts-core/dtddoc/struts-config_1_3.dtd.html#message-resources

struts-config にパラメーター属性とともにキー属性 (一意の値を持つ) を含めます。個別のキーがない場合、resources.Registration は resources.DefaultResource を上書きしています
(この仮定をテストするには、struts-config で 2 つのメッセージ リソースの順序を切り替えます。その後、あなたの label.username は機能しますが、他のバンドルからのメッセージは機能しません)

于 2011-01-21T17:02:11.020 に答える
2

キー属性を提供する必要があると思います。リソース プロパティ ファイルから特定のメッセージを表示するには、キーを jsp のタグで使用する必要があります。このチュートリアルを見てください。

于 2011-01-21T17:01:18.353 に答える