Spring JSR286Portletアプリケーションに取り組んでいます。ロケールは、ログイン時に読み込まれるデフォルトの言語設定によって決まります。
次に、ポートレットを介して通貨のフォーマットを行う必要があります。たとえば、私は次のことを行います。
<fmt:setLocale value="en_IE" />
result: <fmt:formatNumber type="currency" value="324.00" currencyCode="EUR" />
(通常、これらの値はすべて動的に設定されます。)
これにより、通常の操作を実行すると、すばらしい結果が得られます。
result: €324.00
ただし、アプリケーションで@ResourceMapping
リクエストを行う場合を除きます。この場合、そしてここでのみ、私は次のようになります。
result: ?324.00
RenderRequest
sをレンダリングするjspとsをレンダリングするjspに同じ2行がありますResourceRequest
。しかし、私が何をしても、の一部としてクリーンな出力を生成することは常に失敗しますResourceRequest
。
何が矛盾を引き起こしている可能性があるかについてのアイデアはありますか?
2番目の編集:
+ BalusCの2番目のコメントに続いて、jspに次のように記述します。
<% System.out.println("Response Char Encoding: " + response.getCharacterEncoding()); %>
それが機能する定期的なリクエストの場合、次のようになります。
SystemOut O Response Char Encoding: UTF-8
レンダリングリクエストの場合、それが機能しない場合は、次のようになります。
SystemOut O Response Char Encoding: ISO-8859-1
したがって、はい、予想どおり、これは文字エンコードの問題です。
-
編集3:
したがって、問題は、SpringでUTF-8の文字エンコードをに設定する方法ResourceResponse
です。
のページディレクティブを入力<%@page pageEncoding="UTF-8"%>
しても、上記のデフォルトのエンコーディングは上書きされません。これをSpringに直接構築する方法は複雑なハックであり(web.xmlのCharacterEncodingFilterを使用したSpring Encodingを参照)、リソースリクエストメソッドがほんの一握りしかないことを考えると、最も簡単な方法は
response.setCharacterEncoding("UTF-8");
それらのメソッドに。
特にこれをより簡単にSpringに入れる方法について間違っている場合は、他の提案をいただければ幸いです。