我有一个从数据库中提取字符串的Web应用程序。这个字符串有时可能很长,可能包含回车符和双引号。
我现在的问题是我在后端拉这个字符串并尝试使用javascript在jsp页面上显示它,我遇到了一些问题。 (顺便说一句,该应用程序使用struts2)
第一种方法:
<% String myString = (String)request.getAttribute("myVar"); %>
<script LANGUAGE="JavaScript">
document.getElementById('myTextArea').value =' <%= myString %> '; //this uses single quote
</script>
问题:
这不能显示非常长的字符串(1000+ char)和带回车符的字符串,但可以显示包含双引号的字符串。
第二种方法:
<% String myString = (String)request.getAttribute("myVar"); %>
<script LANGUAGE="JavaScript">
document.getElementById('myTextArea').value = " <%= myString %> "; //this uses double quotes
</script>
问题:
这不能显示带双引号的字符串和带回车符的字符串,但它可以处理非常长的字符串(1000+字符)。
如何显示我拉的字符串,其中包含双引号和非常长的回车符???
谢谢,
答案 0 :(得分:0)
为什么要使用javascript来执行此操作,为什么不这样做:
<pre>
<%= myString %>
</pre>
答案 1 :(得分:0)
如评论中所述,您应该只使用JavaScript Object Notation(JSON)
答案 2 :(得分:0)
确定。假设您的服务器端字符串为Beam me down, chief O'Brien
。您的代码将生成此输出,并将其发送到客户端浏览器:
document.write('Beam me down, chief O'Brien');
^^^^^^^^^^^^^^^^^^^^^^^-----one string
^^^^^ non-string
^^^ new string
注意不平衡的报价。你可能有一个很好的普通字符串,但它在语法上是非法的javascript,因为JS不知道Brien
。然后输出代码中的结束引号使训练);
成为新的未终止字符串文字的一部分。
所以你有两个语法错误,导致整个JS代码块被杀死/忽略。
同样,既然你只是立即对它进行document.write
,那么你实际上只是尝试在文档流程中的那一点将该字符串写入文档中,这样你就可以: / p>
<%= myString %>
并获得相同的效果,而不必担心JS语法问题。
如果你绝对必须通过Javascript写出来,那么输出字符串作为JSON字符串文字,这保证在语法上是有效的Javascript。
答案 3 :(得分:0)
看到你的代码后。我认为您根本不需要使用JavaScript。您的目标是在页面加载时使用操作类中定义的值预填充文本字段,而不需要执行这么长的过程。
我假设myVar
是Strtuts2 Action类中的一个属性,并且你在Action类中尊重getter和setter,所以为了填充JSP页面中的textfiled,只需使用Struts2标签,它就会为你完成剩下的工作,包括
您需要在JSP中添加以下代码
<s:textfield name="myVar" value="%{myVar}/>
value="%{myVar}
将为您完成工作,因为它将从Request(Value-Stack)中获取值,并将使用所需的值填充文本字段。
上面的代码工作包括你的JSP页面中的S2标签库,你很高兴。这些标签代码将转换为简单的HTML,你可以做任何你想做的事情,可以用HTML + Java-完成脚本
答案 4 :(得分:0)
&lt;%= myString%&gt;应该管用。如果您想要一些效果,可以将这些数据保存在一些隐藏文本中,并在需要时填充。我希望你不要对&lt;%= myString%&gt;将在您运行此js方法时执行。它将在jsp的响应被创建时运行。