【问题标题】:assign javascript variable to jsp code?将javascript变量分配给jsp代码?
【发布时间】:2012-03-29 10:38:06
【问题描述】:

我在 jsp 中有 4 个数组列表,我想从 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 中获取一个元素。
有什么方法可以将 替换为
类似 ?

【问题讨论】:

    标签: javascript jsp


    【解决方案1】:

    没有。

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

    改为使用JSON 编码器以JavaScript 友好格式提供数组。在你的脚本中使用它,这样你就可以得到一个 JavaScript 数组,然后循环它。

    【讨论】:

      【解决方案2】:

      在您的 scriplet 中发出一个 javascript 数组(假设标题是字符串的 java 集合)并使用您的数组的 js 对应项。

      <script>
      
      var jsArray = [];
      
      <% int i = 0; foreach (String iterat : titles) { %>
      
      jsArray[<%= i %>] = '<%= iterat %>';
      
      <% i++; } %>
      </script>
      

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

      注意:动态输入,^^中可能有语法错误

      大麦克

      【讨论】:

        【解决方案3】:

        好吧..我终于成功了。

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

        <%@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>
        

        【讨论】:

          猜你喜欢
          • 2012-01-06
          • 2014-05-31
          • 2011-08-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-26
          • 1970-01-01
          相关资源
          最近更新 更多