我正在尝试使用来自支持bean的字符串,该字符串可能包含换行符作为JavaScript方法的参数:
来自xhtml的代码段:
<a4j:commandLink id="showEntry"
immediate="true"
styleClass="smallSpaceLeft"
action="#{bean1.method()}"
onclick="jsMethod('#{entry.text}')"
value="#{messages['general.click']}" />
一切正常,除了字符串包含任何换行符。
例如:#{entry.text} =“第一行。\ n第二行。
html输出看起来像:
<a class="smallSpaceLeft" href="#" id="j_id279:0:showEntry"
name="j_id279:0:showEntry" onclick="jsMethod('First line.
Second line.');A4J.AJAX.Submit('j_id272',event,
{'similarityGroupingId':'j_id279:0:showEntry','parameters':
{'j_id279:0:showEntry':'j_id279:0:showEntry'} } );return false;">Click me</a>
因此,当换行符结束命令时,JavaScript中断了。如何避免这种情况?
最佳答案
您无法使用javascript处理它,必须在打印代码之前替换换行符。
在字符串中,您可以在换行符前加反斜杠。但是,由于可能会有更多可疑字符,因此我更愿意对字符串进行URL编码,然后通过使用encodeURIComponent()在javascript中对其进行解码。