2014-03-20 2 views
2

я использую форму: скрытый тег из пружинных форм для хранения некоторых значений в формате JSONмне нужна форма: скрытый атрибут выходного значения, заключенный в одинарных кавычках

<form:hidden path="myJson"/> 

значение Это JSON имеет такой характер:

[{"html":"<a href=\"index.html\">text has &#39;single quotes&#39; or even \"double quotes\"</a>"}] 

так JSON имеет двойные кавычки, которые сбежали с \»в случае, если они находятся внутри строки, и может иметь одиночные кавычки, которые сбежавшие в качестве HTML сущности

&#39; 

Таким образом, я использую обычный тип входного = «скрытый», как это:

<input type="hidden" name="myJson" value='[{"html":"<a href=\"index.html\">text has &#39;single quotes&#39; or even \"double quotes\"</a>"}]'> 

значение атрибута Примечания использует одиночные кавычки. Теперь, с помощью пружинных формы вывода используются двойные кавычки:

<input type="hidden" name="myJson" value="[{"html":"<a href=\"index.html\">text has &#39;single quotes&#39; or even \"double quotes\"</a>"}]"> 

Так что, когда я получаю значение я получаю только «[{», а остальное написано в теле страницы.

Кроме того, если я не могу использовать htmlEscape = "ложный", как это:

<input:hidden path="myJson" htmlEscape="false"/> 

Потому что я получаю все значения полного htmlEntities:

[{&quot;html;&quot... 

Тогда библиотека, которая использует эти JSON значение читает их буквально и вместо того, чтобы писать ссылку, он пишет полный HTML-код в теле.

Есть ли способ изменить вывод ввода: скрытый, поэтому он отображает одинарные кавычки вместо двойных кавычек?

В качестве альтернативы, есть ли лучший способ достичь этого? Требование состоит в том, что этот JSON может хранить HTML и одиночные и двойные кавычки.

Спасибо!

ответ

2

вы можете попробовать использовать JavaScript следующим образом:

HTML

<input type="hidden" id="example" value=""> 

JS

var json = JSON.stringify([{"product_id":123,"name":"stack"}]); 
document.getElementById('example').setAttribute('value', json.replace(/"/g, "&quot;")); 
+0

я, наконец, взял маршрут вы предлагаете. Я использовал атрибут htmlEscape = "false", а затем закодировал объекты до того, как их прочитает библиотека JavaScript, которая читает этот JSON. благодаря – ordago