我在ACTION中查询了某个表,然后把记录的内容存在LIST类型变量Partner中,然后跳转到下边的页面现在我需要把Partner中的某个属性,绑定到SELECT,并通过某个按钮能动态的生成N个SELECT,下边是我的代码,运行后提示的是无法创建集合。
<html:html>
<body>
<script type="text/javascript">
 function   addline()
 {   
   newline=document.all.addPartner.insertRow();   
   newline.insertCell().innerHTML=
     "<select name='select["+(document.all.addPartner.rows.length-1)+"]'>"+
                            "<logic:iterate id='Partner' name='Partner'>"+
                               "<option value='${Partner.partnerName}'>"+
                                   "<bean:write name='Partner' property='partnerName'/>"+
                                "</option>"+
                             "</logic:iterate>"+
                          "</select>"+  
   "<input type='text' name='tt["+(document.all.addPartner.rows.length-1)+"]'>"+
   "<input  type='button' value='删除' onclick='del()'>"
  }   
  function   del()
  {   
     document.all.addPartner.deleteRow(window.event.srcElement.parentElement.parentElement.rowIndex);   
  }   
</script>
 <html:form action="/addProduct" method="post">
     <input   type="button"   onclick="addline()"   value="增加">   
        <table id="addPartner">
               <tr>
                  <td>
                    <select name="select">
                            <logic:iterate id="Partner" name="Partner">
                               <option value="${Partner.partnerName}">
                                   <bean:write name="Partner" property="partnerName"/>
                                </option>
                             </logic:iterate>
                          </select>    
                          <input type="text" name="fe"/>
                   </td>
                 </tr>
          </table>
 </html:form>
<body>
</html:html>难道是struts标签不能嵌套在JS之中么???请高手帮忙解释解释,也请教下我这个该怎么实现.

解决方案 »

  1.   

    JS貌似不认识STRUTS标签,呵呵,struts标签也不支持嵌套调用吧为什么不直接写select语句?再一个select不支持直接写innerHtml,有BUG,需要create每个元素。。
    希望给你点提示参考而已。。
      

  2.   

    用jsp文件加入2个标签库
    <%@ taglib uri="....struts-logic" prefix="logic">
    <%@ taglib uri="....struts-bean" prefix="bean">
      

  3.   

    request数据。然后在newline.insertCell().innerHTML = str.
      

  4.   

    你的意思是要动态生成select标签,
    可以用dom来生成select,在页面中生成struts标签是不可能动态生成HTML的
    建议你用dwr或者json返回一个对象,再循环生成,生成代码我写好了,可以直接运行
    要加分哦MM    - _ - 
     <html>
    <head>
    <script>
    var item = 0;
    function addSelect()
    {
    var selectDiv=document.getElementById('selectfrom');
    if(item==0)
    {
    while(selectDiv.firstChild)
         {
     selectDiv.removeChild(selectDiv.firstChild);
    }
    }
    item = 1;

    var selectinput=document.createElement("select"); optioninput=document.createElement("option"); optioninput.appendChild(document.createTextNode("我是值")); //在这里可以使用循环添加子值 selectinput.appendChild(optioninput); selectDiv.appendChild(selectinput); document.getElementById('selectfrom').style.display="";
    }
    </script>
    </head>
    <body>
    <input type="button" value="添加" onClick="addSelect()">
    <div id="selectfrom" style="display:none">
    数据加载中。
    </div>
    </body>
    </html>
     
      

  5.   

    DWR OR JSON.....都没学过   - -@
    汗汗。
      

  6.   

    晕倒,我帮你写的那一段代码,你看看怎么改吧,用AJAX来动态才对
      

  7.   

    HOHO干吧滴~
    5点多了,下班闪人了,记得结贴哦
    - _ -
      

  8.   

    struts标签放在js里肯定是不行的!
    js是在客户端的浏览器里执行的!
    而struts标签要通过服务器的转换成HTML再发送到客户端的先把全部数据读出来放在js的数组里!
      

  9.   

    哎,太笨了8楼GG的方法,我研究了,但还是不会~~
    因为也是没学过你讲的我好多都没学到
    新买的AJAX书还没翻过,汗汗
    最后我自己是用了下边的方法解决~~
    总算好了~~~
    谢谢各位了~~
    <script type="text/javascript">
        <%
               String name[]=(String [])request.getAttribute("name");
               String id[]=(String [])request.getAttribute("id");
               String str="";
               for(int i=0;i<name.length;i++)
              {
                str=str+"<option value='"+id[i]+"'>"+name[i]+"</option>";
               } 
         %>
     var str1="<%=str%>";
     function   addline()
     {   
       newline=document.all.addPartner.insertRow();   
       newline.insertCell().innerHTML="<select name='s["+
                   (document.all.addPartner.rows.length-1)+
                   "]'>"+str1+"</select>"+
       "<input type='text' name='tt["+(document.all.addPartner.rows.length-1)+"]'>"+
       "<input  type='button' value='删除' onclick='del()'>"
      }   
      function   del()
      {   
         document.all.addPartner.deleteRow(window.event.srcElement.parentElement.parentElement.rowIndex);   
      }  
      
      
      </script>