2014-04-06 57 views
0

好的。这是我的完整代码。我的问题是,当试图在我的javascript/html代码中使用字符串数组“comentarios”我不知道如何“传递”整个数组。我一直在使用applet工作几个月,但是我从来不必将数组传递给“html like code”。我该如何解决这个问题?感谢将java数组打印成HTML代码

import java.awt.*; 
import java.awt.event.*; 
import java.sql.*; 
import java.io.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 

public class ValoracionesDos extends HttpServlet implements SingleThreadModel{ 
    public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException{ 
PrintWriter toClient = res.getWriter(); 
int numRows=3; 
String comentarios[] = new String[numRows]; 
comentarios[0]="hello"; 
comentarios[1]="me"; 
comentarios[2]="bye"; 
int i=0; 
    toClient.println("<html>"); 
    toClient.println("<body>"); 
    toClient.println("<script Language=JavaScript>"); 
    toClient.println("var len = " + numRows+";"); 
    toClient.println("var myrest = new Array();"); 
    toClient.println("for(i = 0; i < len; i++){"); 
     toClient.println("myrest[i]='"+ comentarios[i]+"';"); 
     toClient.println("}"); 
    toClient.println("var myTable= '<table border=10 cellspacing=3 cellpadding=3>'"); 
    toClient.println("for(i = 0; i < " + numRows + "; i++){"); 
     toClient.println("myTable+='<tr>';"); 
     toClient.println("myTable+='<td> Restaurante: </td>';"); 
     toClient.println("myTable+='<td>'+"+"myrest[i]"+"+'</td>';"); 
     toClient.println("myTable+='</tr>';"); 
    toClient.println("}"); 
    toClient.println("myTable+='</table>';"); 
    toClient.println("document.write(myTable);"); 
    toClient.println("</script>"); 
    toClient.println("</body>"); 
    toClient.println("</html>"); 

} 

} 

的问题是,被叫JavaScript数组“myrest”总是与的了“意见”(java的字符串数组)的第一个元素填充。我该如何解决这个问题。谢谢

+0

我不确定,但你似乎在这里感到困惑。虽然我可能错了。 Java小程序是在浏览器中运行的小程序,它们仍然是Java程序。他们不能呈现HTML响应。 HTML响应应该由浏览器呈现。对于Java应用程序将响应发送回浏览器并运行,您需要用Java编写Servlet。让我知道这是否有道理。 –

+0

是的。我有一个浏览器调用的.class(来自.java) – karl71

+0

你是在tomcat中运行还是在浏览器中运行applet?你能发布完整的课程文件吗? –

回答

3

一两件事第一:不管你在做什么,不管你做一个applet或servlet或任何其他Java应用程序,它是从未一个好主意,通过附加的字符串进行HTML。 千万别这么做!但是当我开始学习时,我做了同样的事情(:D),今天我对此大笑起来。所以,让我们假设你想学习Java并且你需要一些提示...

你问题在于你的JavaScript(你生成的)循环与你的Java数组无关。当然。你所做的是你从Java代码中创建另一个程序(一个JavaScript程序)。这两个程序(您的Java代码和它生成的JavaScript)是两个完全不同的应用程序。所以你不能通过Java数组来迭代JavaScript(就像你尝试的那样)。

相反,您应该在Java中迭代Java数组并生成JavaScript代码。下面是它的样子(我没有测试它,它是伪代码):

toClient.println("var myrest = new Array();"); 
for(String element: myArray) 
    toClient.println("myrest.append(" + element + ");"); 
+0

是的!有用!只需将“.append”改为“.push”即可。你是对的...我通过附加字符串来编写html代码。哪一个是正确的选择? – karl71

+0

使用你的解决方案我会得到一个巨大的HTML是阵列非常长。 :(无论如何,谢谢! – karl71

+0

@ karl71 - 是的,HTML/JavaScript可能会变得非常大,但是你不能避免这种情况,在某些地方你必须将信息存储在你的HTML源代码中。可以使用某种模板渲染,这是通过一个框架(如Play框架)来完成的,它将采用一个模板(这是一个带有特殊语法的HTML文件)并填充它,但结果也会非常大。http://www.playframework.com/documentation/2.2.x/JavaTodoList –