Java 字符串被巧妙地保存在html隐藏输入中
我有一个字符串,如下所示,来自服务器端Java 字符串被巧妙地保存在html隐藏输入中,java,html,jsp,Java,Html,Jsp,我有一个字符串,如下所示,来自服务器端 String productIDs = "[{"productID":"226167","productName":"It is my life (Bingo)"},{"productID":"3193","productName":"It is your name (jingo)"},{"productID":"273838","productName":"It's the same milk/Butter i drink/ate yesterday
String productIDs = "[{"productID":"226167","productName":"It is my life (Bingo)"},{"productID":"3193","productName":"It is your name (jingo)"},{"productID":"273838","productName":"It's the same milk/Butter i drink/ate yesterday"}]"
现在我将它保存在一个隐藏的输入字段中
<input type="hidden" class="hiddenInput" value="<%=productIDs %>" />
但当我通过firebug检查它时,它保存得非常精巧,如下所示
<input type="hidden" class="hiddenInput" yesterday"}]"="" is ="" my ="" Butter ="" life ="" (Bingo)"},{"productid":"273838","productname":"It ="" crmo="" (paar)"},{"productid":"3193","productname":"It ="" milk="" same ="" flip-off="" productid":"226167","productname":"It ="" value="[{" />
有人知道为什么会发生这种情况吗?如果字符串中有引号,则在将其粘贴到HTML之前需要将其转义。如果字符串中有引号,则在将其粘贴到HTML之前需要将其转义。尝试以下方法:
String productIDs = "[{\"productID\":\"226167\",\"productName\":\"It is my life (Bingo)\"},{\"productID\":\"3193\",\"productName\":\"It is your name (jingo)\"},{\"productID\":\"273838\",\"productName\":\"It's the same milk/Butter i drink/ate yesterday\"}]";
试试这个:
String productIDs = "[{\"productID\":\"226167\",\"productName\":\"It is my life (Bingo)\"},{\"productID\":\"3193\",\"productName\":\"It is your name (jingo)\"},{\"productID\":\"273838\",\"productName\":\"It's the same milk/Butter i drink/ate yesterday\"}]";
问题在于保存字符串的方式,必须切换使用的引号类型,否则js不知道字符串的结束和开始位置 在你的问题中,它看起来是这样的:
String productIDs = "[{'productID':'226167','productName':'It is my life (Bingo)'},{'productID':'3193','productName':'It is your name (jingo)'},{'productID':'273838','productName':'It's the same milk/Butter i drink/ate yesterday'}]"
你也可以用\“
代替”
,但对我来说,这更让人困惑
编辑
可以使用以下代码执行此操作:
strUWantToChange.replace('"',"'");
问题在于保存字符串的方式,必须切换使用的引号类型,否则js不知道字符串的结束和开始位置 在你的问题中,它看起来是这样的:
String productIDs = "[{'productID':'226167','productName':'It is my life (Bingo)'},{'productID':'3193','productName':'It is your name (jingo)'},{'productID':'273838','productName':'It's the same milk/Butter i drink/ate yesterday'}]"
你也可以用\“
代替”
,但对我来说,这更让人困惑
编辑
可以使用以下代码执行此操作:
strUWantToChange.replace('"',"'");
正如其他答案已经说过的,引用必须转义。这些不是应该转义的唯一字符<代码>、
“
和&
应该在HTML中系统地转义。风险在于
- 无效的HTML
- 断页
- XSS攻击和安全漏洞
- JSTL
标记: - JSTL
EL函数:fn:escapeXml
${fn:escapeXml(productIDs)}
Scriptlet在JSP中不应使用多年。使用JSTL、其他自定义标记和EL。正如其他答案所述,引号必须转义。这些不是应该转义的唯一字符<代码>、
“
和&
应该在HTML中系统地转义。风险在于
- 无效的HTML
- 断页
- XSS攻击和安全漏洞
- JSTL
标记: - JSTL
EL函数:fn:escapeXml
${fn:escapeXml(productIDs)}
Scriptlet在JSP中不应使用多年。使用JSTL、其他自定义标记和EL。问题在于从何处获得它。你可以用另一种方式来做。。。将
'
放在字符串的外部,然后将放在内部…另请参见编辑…问题是从何处获取它。您可以通过另一种方式进行操作…将'
放在字符串的外部,然后将放在内部。。。另请参见编辑。。。