我希望将字符串从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(我不得不相信Peter在另一个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>

最佳答案

而不是用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>

09-05 14:55