Struts 2 アプリケーションで、見出しにカスタム エラーのメッセージを送信しています。struts.xml ファイルに次のようなグローバルな結果を追加することでそれを行いました。
<global-results>
<result name="badDataError" type="httpheader">
<param name="status">500</param>
<param name="headers.errorMessage">${exception.message}</param>
</result>
</global-results>
<global-exception-mappings>
<exception-mapping result="badDataError" exception="mypackage.BadDataException" />
</global-exception-mappings>
だから、次のような例外をスローすると
throw new BadDataException("my error message");
そのメッセージはファイルのヘッダーに含まれているため、json でエラーとして読み取ることができます。
$.ajax(
{
url: ...,
type: "POST",
data: ...,
success: function(data, textStatus) {
alert("save works");
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
var errorMessage = XMLHttpRequest.getResponseHeader('errorMessage');
var message = "There has been an error";
if (errorMessage != null){
message = message + ':<br/>'+errorMessage;
}
alert(message);
},
dataType: "json"
}
);
これは機能しますが、特殊文字 (例: á é ñ ...) を含むメッセージを送信するたびに、アラートにも、console.log() を使用して変数を表示しても正しく表示されません。 javascript で正しいエンコーディングを使用していないかのように、正しく表示されます。
私はajax呼び出しで設定しようとしました
contenType: 'application/x-www-form-urlencoded; charset=UTF-8'
or
contenType: 'application/x-www-form-urlencoded; charset=ISO-8859-1'
しかし、何の成功もありません。
エラー メッセージとヘッダーに使用されているエンコーディングを確認し、別のエンコーディングを選択するにはどうすればよいですか?
ありがとう。