在jsp,想完成以下操作:
1)根据action传递给该jsp的值,通过select显示出来,已实现;
2)判断select选中了那个值(productId)
3)根据2)中的值,将productId对应的productName,和2)中选中的productId,一起传递给另一个action代码如下:
1)<select id="productionId" name="productionId">
        <%java.util.List list = (java.util.List)request.getAttribute"allProduct");                         
              if(list!=null){%>  
                   <%for(int i=0; i<list.size(); i++){
                        Product product = (Product)list.get(i);%>
                        <option value=<%=product.getId()%>>
                            <%=product.getProductName()%>
                        </option>
                 <% }
              }%>
   <select>
2)
<script language="JavaScript" type="text/javascript" src="DatePicker/WdatePicker.js"></script>
<SCRIPT language=javascript>             function changeAcceptor(productionId){
                  var selected = document.getElementsById("productionId");
                  var i=0;
   for(i=0; i<selected.length;i++){
     if(selected[i].checked == true){
                 break;
                 }
                 return i;
     }
</SCRIPT>
3)
  <%                         
       int i=changeAcceptor(productionId);
  //提示错误:productionId cannot be resolved,这里的productionId 是select中的id

            if(list!=null){        
                Product product = (Product)list.get(i);
            }
  %>
<input type="text" name="productName" id="productName" value="<%=product.getProductName()%>"/>
问下,我2、3步思路是否可以,代码是否对了,不知道如何解决“productionId cannot be resolved,”
望高手指点,最好能给出第2步的常规代码,谢谢先

解决方案 »

  1.   

    java代码里没有生命productionId,productionId只是html里select的名字,
    你提供的代码看不出你第三条是写在哪里的?如果是submit的目标,需要从request中getParameter这个productionId
      

  2.   

    第三条是submit,只是没有帖上,在第三条上加上了String productionId=request.getParameter(productionId); 后,又提示The method changeAcceptor(String) is undefined
      

  3.   

    呵呵
    java中不能这么调用js函数
    changeAcceptor是不是想把select中的这一项选中?
    如果是你的changeAcceptor好像做不到这一点,
    而需要在你循环出options的时候,每次判断,当对应这个id时在这个option中加入selected='true'就行了,好像
      

  4.   

    changeAcceptor函数是从网上找的,能否实现我也不清楚,能否给出以上三步的完整代码?
      

  5.   

    对不起一开始没看明白,你这是想找到productionId对应的index啊
    你上面不是基本上实现了这个功能了么,不需要js
    <%
      Product product = null;
      for(int i=0; i<list.size(); i++){
      if (list.get(i).getId() == Integer.parseInt(productId))
          product = (Product)list.get(i);
    }
    %>
      

  6.   

    <%
      Product product = null;
      for(int i=0; i<list.size(); i++){
      if (list.get(i).getId() == Integer.parseInt(productId))
      product = (Product)list.get(i);
      break;
    }
    %>
    稍微改一下
      

  7.   

    <%
      Product product = null;
      for(int i=0; i<list.size(); i++){
         if (list.get(i).getId() == Integer.parseInt(productId)){
            product = (Product)list.get(i);
            break;
         }
      }
    %>
    这样这样,又写错了,你理解的
      

  8.   

    需要加上
    String productionId=request.getParameter(productionId); 
      

  9.   

    是String productionId=request.getParameter("productionId");  
      

  10.   

    最好不要让你的老师知道了,否则会气出病的。javascript 和 java 是不能混用的不需要判断,在表单提交之后,会自动获取选中的select值
      

  11.   

    <%java.util.List list = (java.util.List)request.getAttribute"allProduct");   LZ 这能取值??
    应该是<%java.util.List list = (java.util.List)request.getAttribute("allProduct");  吧 
      

  12.   

    int i=changeAcceptor(productionId);  这肯定会报错啊  这里productionId 为变量 你有这个变量吗?