2

Struts 1.2 を使用しており、JSP ページで国際化された文字列の値を参照する必要があります。通常は < bean:message > タグを使用してこれを行いますが、代わりに Java コードから参照する必要があります (<% ... %> で囲まれています)。

これどうやってするの?

例えば:

<% 
person.setName("John Smith");
person.setOccupation("Chef");   // I want to internationalize this string
%>
4

4 に答える 4

2

これは一つの方法だと思います。

以下がある場合、struts-config.xml 内:

<message-resources parameter="ABC"/>

次に、次の操作を行います。

JSP の上部:

<%@ page import="java.util.Locale" %>
<%@ page import="org.apache.struts.Globals" %>
<%@ page import="org.apache.struts.util.MessageResources" %>

JSP のどこか:

<%    
MessageResources mr = MessageResources.getMessageResources("ABC");
Locale locale = (Locale) session.getAttribute(Globals.LOCALE_KEY);

person.setName("John Smith");
person.setOccupation(mr.getMessage(locale, "Chef"));
%>
于 2012-09-04T15:20:23.317 に答える
1

まず、Action / JSP / Taglibs を調べて、JSP でスクリプトレット コードを使用する必要があるかどうかを確認することをお勧めします。Struts を使用する全体的な理由は、クリーンな MVC モデルを維持し、ビジネス ロジックがビュー (つまり JSP) に漏れないようにすることです。

スクリプトレット コードのリファクタリングを検討することをお勧めします。

<%  
    person.setName("John Smith"); 
    person.setOccupation("Chef");    
%> 

Action クラスまたは再利用可能なサービス メソッドに直接挿入します。

ただし、絶対にスクリプトレット コードを JSP にドロップ する必要があると判断した場合。

< bean:message>のタグクラスを使用しorg.apache.struts.taglib.bean.MessageTagます。

このクラスのソースを調べたところ、TagUtils.retrieveMessageResourcesStruts MessageResources を返す Struts が使用されています。org.apache.struts.util.MessageResources

Struts Taglibs をサポートするよりも、より一般的なコンテキストでこのコードを模倣/適応することを検討できます。

繰り返しになりますが、可能な限りスクリプトレット コードでビジネス ロジックを回避することを検討することを強くお勧めします。

于 2012-09-04T15:03:01.513 に答える
1

私のやり方は:

このインポートを jsp に入れます。

<%@ page import="org.apache.struts.validator.Resources" %>

次に、次のように「Resources」クラスから「getMessage()」静的メソッドを呼び出します。

<sometag name="p1" value="<%=Resources.getMessage(request, \"my.property.from.resources\")%>"/>

注 : テキスト => 'value="<% = ...%>'を挿入する際に '=' を忘れないでください。

于 2012-11-21T17:56:47.143 に答える