将javascript变量分配给jsp代码?

时间:2012-03-29 10:38:06

标签: javascript jsp

我在jsp中有4个arraylist,我想从javascript函数中获取列表元素。

看起来从jsp arraylist获取一个元素没有问题。

但我不知道如何将多个或所有元素从jsp arraylist移动​​到javascript代码。

下面是我的代码

<script>
    function makeTable(){
    for(c=0;c<row_num;c++){
        row[c]=document.createElement('tr'); 
        for(k=0;k<cell_num;k++) {
            cell[k]=document.createElement('td');
            cont = document.createElement('a');
            cont.href="./bbs_view.jsp?count=" + c;
            cont.innerHTML ="<%=title.get(0)%>";
            cell[k].appendChild(cont);
            row[c].appendChild(cell[0]);
        }
    }
}
</script>

如您所见,上面的函数只能从jsp arraylist中获取一个元素。
有没有办法替换&lt;%= title.get(0)%&gt;到 像&lt;%= title.get(javascript var c)%&gt;?

3 个答案:

答案 0 :(得分:2)

没有。

JSP在服务器上运行。它输出一些文字。浏览器将该文本解释为JavaScript。没有回头路。

相反,使用JSON编码器以JavaScript友好格式提供数组。在脚本中使用它,以便获得JavaScript数组,然后循环遍历。

答案 1 :(得分:1)

在你的scriplet中发出一个javascript数组(assumin titles是一个java集合的字符串),并使用你的数组的js对应部分。

<script>

var jsArray = [];

<% int i = 0; foreach (String iterat : titles) { %>

jsArray[<%= i %>] = '<%= iterat %>';

<% i++; } %>
</script>

大致不优雅(最好在自定义标签中使用它,但应该有效)。

注意:动态输入,可以在^^

中输入语法拼写错误

BigMike

答案 2 :(得分:0)

好的..我终于成功了。

对于像我这样有同样问题的人,我想留下我的代码。

<%@import="java.sql.*, java.util.ArrayList"%>

<%  
class bbsData{
    String title;
    String date;
    String body;
    int count;
}

ArrayList<bbsData> bbslist = new ArrayList<bbsData>();
    try{
     rs=stmt.executeQuery("select * from bbsdata");
     while(rs.next()){
        bbsData bbsOb = new bbsData();
        bbsOb.date = rs.getString(1);
        bbsOb.title= rs.getString(2);
        bbsOb.body = rs.getString(3);
        bbsOb.count = Integer.parseInt(rs.getString(4));
        bbslist.add(bbsOb);
    }    
    stmt.close();
    Conn.close();        
}catch(Exception e){
    out.println(e);
} 
<script>

var jsArray = [];

function dbData(date, title, body, count){  
   this.date = date;
   this.title = title;
   this.body = body;
   this.count = count;
}
function setJsArry(){
    <% int i = 0;
       for (bbsData iterat : bbslist) {
           iterat = new bbsData();
           iterat = bbslist.get(i);
     %>
    date = '<%= iterat.date %>'; 
    title = '<%= iterat.title %>';
    body = '<%= iterat.body %>';
    count = '<%= iterat.count %>';
    jsArray[<%=i%>] = new dbData(date, title, body, count);
       <%i++; } %>

}
function makeTable(){
    setJsArry();
    for(c=0;c<row_num;c++){
    row[c]=document.createElement('tr'); 
       for(k=0;k<cell_num;k++) {
          cell[k]=document.createElement('td');
          cont = document.createElement('a');
          cont.href="./bbs_view.jsp?count=" + c;
          cont.innerHTML =jsArray[c].title;
          cell[k].appendChild(cont);
          row[c].appendChild(cell[k]);
      }
  }
}
</script>