【问题标题】:Print java array into HTML code将java数组打印成HTML代码
【发布时间】:2014-04-06 10:15:55
【问题描述】:

好的。这是我的完整代码。我的问题是,当尝试在我的 javascript/html 代码中使用 string array “commentarios”时,我不知道如何“传递”整个数组。我已经使用小程序工作了几个月,但我从来不需要将数组传递给“html like code”。我该如何解决这个问题?谢谢

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>");

}

}

问题在于名为“myrest”的 javascript 数组总是填充有“commentarios”(java 字符串数组)的第一个元素。我该如何解决这个问题。谢谢

【问题讨论】:

  • 我不确定,但您似乎在这里感到困惑。不过我可能错了。 Java Applet 是在浏览器中运行的小程序,它们仍然是 Java 程序。他们无法呈现 HTML 响应。 HTML 响应应该由浏览器呈现。为了让 Java 应用程序将响应发送回浏览器并运行,您需要用 Java 编写一个 Servlet。让我知道这是否有意义。
  • 是的。我有一个由浏览器调用的 .class(来自 .java)
  • 您是在其中运行类似 tomcat 的东西还是在浏览器中作为小程序运行?你能发布完整的课程文件吗?
  • 是的。我正在使用tomcat运行它。文件太长...我正在访问一些访问数据库,让我把它缩短。但是,正如我所说,我的问题只是我不知道如何将 java 数组转换为 javascript,所以我可以在我的 .html 中使用它
  • 在浏览器中输入servlet的URL,浏览器不会显示任何内容。您是否尝试在浏览器中查看源代码。请记住,您不会打印任何将显示在页面上的内容。

标签: java javascript html applet


【解决方案1】:

先做一件事:无论您在做什么,无论您是制作小程序、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 + ");"); 

【讨论】:

  • 是的!有用!只需将“.append”更改为“.push”即可。你是对的......我通过附加字符串来编写html代码。哪个是正确的选择?
  • 使用你的解决方案我会得到一个巨大的 html 是数组很长。 :(。还是谢谢你!
  • @karl71 - 是的,HTML/JavaScript 可以变得非常大。但你无法避免这一点。您必须将信息存储在 HTML 源代码中的某个位置。做这种事情的更好/正确的方法是使用某种模板渲染。这是由一个框架(如 Play 框架)完成的,该框架将采用一个模板(这是一个具有一些特殊语法的 HTML 文件)并为您填充它。但结果也会非常大。 playframework.com/documentation/2.2.x/JavaTodoList
猜你喜欢
  • 2011-07-05
  • 2017-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多