我希望将Java中的字符串传递给javascript showContent函数。 Java和javascript都包含在JSP页面中。字符串strLine
包含我想使用showContent函数显示的XML内容。
我的Java
try{
//Open the file that is the first command line parameter
FileInputStream fstream = new FileInputStream(table.get(xmlMatch));
// Get the object of DataInputStream
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
//Read File Line By Line
while ((strLine = br.readLine()) != null)
{
out.println (strLine);
}
Javascript(我必须相信彼得在另一个question中提供给我这个)
<script type="text/javascript" language="JavaScript">
function showContent()
{
document.getElementById('showContent').innerHTML = "printed content";
}
</script>
我尝试用"strLine";
(strLine);
和("strLine");
我还尝试将strLine
设置为会话属性
session.setAttribute("strLine", strLine);
并使用"<%=strLine%>";
,但结果为空打印在屏幕上。
任何帮助都会很棒。
HTML
<a href="#" onclick="showContent()">Next! <%=keywords%> concept </a>
<div id="showContent"></div>
答案 0 :(得分:3)
不应使用out.println
打印它,而应该放入变量(可能是StringBuilder)。为了做到这一点,你必须:
在适当的范围内声明变量(可能在JSP的开头)
StringBuilder contentInnerHtml = new StringBuilder();
然后将文件的文本附加到这个新变量:
while ((strLine = br.readLine()) != null)
{
contentInnerHtml.append(strLine);
}
最后,在代码的javascript部分返回其值(使用toString()
):
<script type="text/javascript" language="JavaScript">
function showContent()
{
document.getElementById('showContent').innerHTML = "<%=contentInnerHtml.toString()%>";
}
</script>
答案 1 :(得分:0)
如果您的html位于try / catch块中,<%=strLine%>
应该可以正常工作。如果没有,那么将其指定为会话属性也会起作用,但是,您还需要从会话中访问它:
例如:
try{
//Open the file that is the first command line parameter
FileInputStream fstream = new FileInputStream(table.get(xmlMatch));
// Get the object of DataInputStream
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
//Read File Line By Line
while ((strLine = br.readLine()) != null)
{
%>
<div id="xxx"><%= strLine %></div>
<%
out.println (strLine);
}
但这是令人难以置信的丑陋代码,难以阅读/调试。
try{
//Open the file that is the first command line parameter
FileInputStream fstream = new FileInputStream(table.get(xmlMatch));
// Get the object of DataInputStream
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
//Read File Line By Line
while ((strLine = br.readLine()) != null)
{
session.setAttribute("strLine", strLine);
out.println (strLine);
}
} // end of try
catch( ... ){}
%>
<div id="xxx"> <%= session.getAttribute( "strLine" ) %></div>
但是,在第二种情况下,您只会显示文件的最后一行,所以我不完全确定您要完成的任务。
如果您希望显示全文,也许您可以使用:
StringBuffer strLineBuf;
//Read File Line By Line
while ((strLine = br.readLine()) != null)
{
strLineBuf.append(strLine).append("<br/>");
}
session.setAttribute( "strLine", strLineBuf.toString() );
然后在你的try / catch结束后,在你的html代码中:
<div id="xxx"><%= session.getAttribute( strLine ) %> </div>