我需要的形式:隐藏到输出值属性中括在单引号

I need form:hidden to output value attribute enclosed in single quotes

本文关键字:属性 输出 单引号 隐藏      更新时间:2023-09-26

我正在使用form:hidden标签从spring forms在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;

所以我一直在使用一个普通的输入类型="hidden",就像这样:

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

注意value属性使用单引号。现在,使用spring格式输出使用双引号:

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

所以当我得到值时,我只得到"[{",其余的都写在页面的正文中。

同样,如果我不能像这样使用htmlEscape="false":

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

因为我得到了htmlEntities的所有值:

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

然后使用这个JSON值的库逐字读取它们,而不是写入链接,而是在主体中写入完整的HTML。

是否有办法改变输入:隐藏的输出,使其显示单引号而不是双引号?

或者,有没有更好的方法来实现这一点?要求是这个JSON可以保存HTML和单引号和双引号。

谢谢!

您可以尝试使用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;"));