我正在尝试使用来自支持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中对其进行解码。

10-04 17:21