0

開発中の Spring アプリケーションに UTF-8 エンコーディングを使用しようとしていますが、タイルから属性を挿入するときに正しいエンコーディングを取得するのに問題があります。

JSP テンプレートに次のフラグメントがあります。

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
    <title><tiles:getAsString name="title" /></title>   
</head>
<body>
    <tiles:insertAttribute name="header" ignore="true" />
....

私のタイルXML構成ファイルには、次のようなものがあります。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE tiles-definitions PUBLIC
   "-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN"
   "http://tiles.apache.org/dtds/tiles-config_2_1.dtd">
<tiles-definitions>
   <definition name="tiles:base" template="/WEB-INF/views/templates/main.jsp">
     <put-attribute name="title" value="Título" />
...

このファイルにUTF-8エンコーディングがあることをEclipseでチェックしました。JSP の残りの部分 (ヘッダーに挿入された JSP フラグメントなど) は正しいのに、title 属性で渡された単語がページに正しく表示されません (アクセント付きの文字が間違った方法で表示されます)。エンコーディングを ISO-8859-1 に変更すると、タイトルは問題ありませんが、ページの残りの部分が間違っています。タイル ファイルでエンコーディングを UTF-8 に変更できないようです。作成したファイルで「ISO-8859-1」も探しましたが、この構成をどのファイルにも設定していません。

タイルの正しいエンコーディングを設定する方法を誰か教えてもらえますか?

ありがとう

4

4 に答える 4

9

に以下を追加しますweb.xml。これは、各 JSP ファイルにヘッダーを追加するのと同じ効果があります。

web.xml:

<web-app>
    ...
    <jsp-config>
        <jsp-property-group>
            <url-pattern>*.jsp</url-pattern>
            <page-encoding>UTF-8</page-encoding>
            <trim-directive-whitespaces>true</trim-directive-whitespaces>
        </jsp-property-group>
    </jsp-config>    
</web-app>
于 2012-07-04T19:21:01.290 に答える
1

別の方法として、タイルから挿入されるコンテンツに対してReloadableResourceBundleMessageSource (プロパティ defaultEncoding="UTF-8" を使用) を使用することもできます。

次のように、タイルからキーワードを渡し、それを使用してリソース バンドルから必要なコンテンツを出力できることを意味しました。

<tiles:useAttribute id="title_key" name="title"/>
<spring:message code="${title_key}"/>
于 2011-07-22T10:53:05.720 に答える