データベースに保存されているJSON文字列があります。JSP ページの 1 つでこの文字列を取得し、文字列または JSON オブジェクトを Javascript 関数に渡せるようにしたいと考えています。関数は、テスト目的でこれだけです
function test(h){
alert(h);
}
これで、データベースから JSON 文字列を正常に取得できるようになりました。取得していることを確認するために画面に出力しましたが、このように渡すと
<input type="button"
name="setFontButton"
value="Set"
class="form_btn_primary"
onclick="test('<%=theJSON%>'); return false;"/>
何も起こりません。firebug を使用して何が問題なのかを確認したところ、無効な文字があると表示されました。
それで、JSONオブジェクトを次のように渡そうとしました
Widget widg = mapper.readValue(testing.get(0), Widget.class);
次に、それを渡します
onclick="test('<%=widg%>'); return false;"/>
これはエラーなしで渡され、オブジェクト名を警告しますが、解析できません。オブジェクトは、ウィジェットクラスが保存されている場所のパッケージ名のように入ってきます
com.package.mode.Widget@ba8af9
Stringify を使用してみましたが、この Jackson JSON オブジェクトでは機能しないようです。
すべてが失敗した後、データベースから文字列を取得し、base64 でエンコードするという最後の手段を試しました。ただし、これを行うとこれも失敗します
String test = Base64.encode(theString);
ただし、それを行う場合は、画面に出力してから、出力されたものをコピーして送信するとうまくいくので、それがなぜなのかよくわかりません。
誰かが私が間違っていることを教えてください。私は非常に多くの異なるソリューションを試しましたが、何も機能していません。
JSON文字列は、このようにデータベースに保存されます
{ "id":1, "splits":[ { "texts":[ { "value":"Test", "locationX":3, "locationY":-153, "font":{ "type":"標準"、"サイズ":"中"、"太字":false、"色":"5a5a5a"、"斜体":false } } ] } ] }
誰かが私を直接の方向に向けることができれば、とても感謝しています!!
編集:
他の誰かが同じ問題を抱えている場合は、JSP から JS 関数に JSON を渡すためにこれを行います
<%=theJSON.replaceAll("\"", "\\\'")%>
これにより、JSON を渡すことができます。
次に、JavaScriptで通常のJSON形式に戻します
theJSON = theJSON.replace(/'/g,'"');
うまくいくはずです