これは、seam 2.2を使用して構築されたアプリケーションであり、Jboss4.1.2で完全に実行されています。ISPからのサポートにより、JBossをバージョン5.1にアップグレードする必要があります。私はJBoss5で同じアプリを実行しようとしましたが、すべてが正常に見えましたが、1つだけ失敗しました。
これは、OpenFlashChartライブラリを使用して作成されたチャートをフィードするためのJSonを生成するコードの一部です。また、JOFCライブラリを使用して、これらのグラフのJSonを生成します。私たちが使用したアプローチには、基本的にJSonを印刷するシームファクトリがあり、チャートが適切にレンダリングするために必要なJSonをロードする空白の.xhtmlページでこのファクトリを参照します。いくつかのスニペットに従ってください:
シームファクトリが呼び出されるxhtmlページ:
<f:view xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
contentType="text/json; charset=UTF-8">
#{jsonGraficoPesoUsuario}
</f:view>
JSon文字列を生成するファクトリメソッド:
@Factory("jsonGraficoPesoUsuario")
public String graficoPesoUsuario()
{
...
String jsonString = chart.toString();
log.info("JSonString ==>> " + jsonString);
// try {
// jsonString = URLEncoder.encode(jsonString, "UTF-8");
// } catch (UnsupportedEncodingException e) {
// log.error("Erro ao tentar fazer o encode da string json ==>> " + e.getMessage());
// e.printStackTrace();
// }
return jsonString;
コードは、送信する前にjson文字列をエンコードしようとしたが、成功しなかったことも示しています。json to log.infoが出力される行では、json文字列は完全に保持されますが、JBoss5を使用すると、 "(二重引用符)文字がhtmlエスケープ文字に置き換えられます。
次のjson文字列はチャートに適切にフィードすることが期待され、これはjboss4の下で正しく動作します。
{"y_axis":{"min":100,"colour":"#96A9C5","grid-colour":"#DDDEE1","max":112},"title":{"text"
:"Gráfico de evolução de Peso"},"bg_colour":"#FFFFFF","is_decimal_separator_comma":1,"elements":[{"text":"Peso","values":[100.5,101.5,102.5,
102,103,107,109,110.5,108],"font-size":10,"type":"line","tip":"Linha do Peso"}],"num_decimals":2,"is_fixed_num_decimals_forced":1,"x_axis":{
"colour":"#96A9C5","grid-colour":"#DDDEE1","labels":{"rotate":"-24","labels":["01/05/10","15/05/10","25/05/10","01/06/10","09/06/10","25/06/
10","05/07/10","10/07/10","20/07/10"]}},"is_thousand_separator_disabled":0}
ただし、JBoss5を使用するよりも、次の文字列が出力されます。二重引用符の代わりにhtmlエンコードを使用することに注意してください。
{"y_axis":{"min":100,"colour":"#96A9C5","grid-colour":"#DDDEE1","max":112},"title":{"text":"Gráfico de evolução de Peso"},"bg_colour":"#FFFFFF","is_decimal_separator_comma":1,"elements":[{"text":"Peso","values":[100.5,101.5,102.5,102,103,107,109,110.5,108],"font-size":10,"type":"line","tip":"Linha do Peso"}],"num_decimals":2,"is_fixed_num_decimals_forced":1,"x_axis":{"colour":"#96A9C5","grid-colour":"#DDDEE1","labels":{"rotate":"-24","labels":["01/05/10","15/05/10","25/05/10","01/06/10","09/06/10","25/06/10","05/07/10","10/07/10","20/07/10"]}},"is_thousand_separator_disabled":0}
私はすでにOSロケールをチェックし、server.xmlで本文をエンコードするためにjbosshttpチャネルで設定を行いました。
<!-- A HTTP/1.1 Connector on port 8080 -->
<Connector protocol="HTTP/1.1" port="8080" address="${jboss.bind.address}"
connectionTimeout="20000" redirectPort="8443" useBodyEncodingForURI="true"/>
うまくいきませんでした。アプリのすべてのリソースとページにUTF-8を使用しています。
手がかりはありますか?
事前にTx。[] s