2017-03-18 74 views
0

我需要更改struts2迭代器內的輸入類型文本的值。我不喜歡刷新所有頁面,我只想刷新輸入的價值,我認爲使用JSON可能是一個解決方案(我不確定這是否是最好的方法,我是初級程序員。 ..)使用javascript更改struts2迭代器中的輸入值

這是我的jsp

<input type="text" name="cantidad" id="cantidadIndividual" readonly="readonly" value="<s:property value="#a.cestaUnidades"/>"> 
    <img src="../Imagenes/Administracion/Signo_Mas.png" id="mas" onclick="MasMenosCantidad('+',<s:property value="#a.cestaUnidades"/>,<s:property value="#a.cestaId"/>,<s:property value="#a.ropaStock.rostockUnidades"/>);"/> 

    <script> 
      function MasMenosCantidad(valor,cantidad,id,stock){ 
       document.getElementById("clave").value = id; 
       if(valor == '+'){ 
        cantidad++; 
       } 
       if(valor == '-'){ 
        cantidad--; 
       } 
       if(cantidad <= stock){ 
        document.getElementById("cantidadIndividual").value = cantidad; 
        usarAJAXCantidad(id,cantidad); 
        //document.getElementById("formCantidad").submit(); 
       } else {      
        if(valor == '-'){ 
         document.getElementById("cantidadIndividual").value = stock; 
         usarAJAXCantidad(id,cantidad); 
//      document.getElementById("formCantidad").submit(); 
        } else { 
         alert("Stock excedido"); 
         } 
        } 
       } 
      } 
      function usarAJAXCantidad(clave,cant){ 
       $.getJSON('ajaxCantidad', { 
        clave : clave, 
        cantidad : cant 
       }, function(jsonResponse3) { 
        var nuevaCantidad = $('#cantidadIndividual'); 
        $.each(jsonResponse3.stateMap3, function(key, value) { 
         nuevaCantidad.value = value; 
        }); 
       }); 
      }    
     </script> 

的strutx.xml

<action name="ajaxCantidad" class="Acciones.HomeCesta" method="ajaxCantidad"> 
      <result type="json"> 
       <param name="excludeNullProperties">true</param> 
       <param name="noCache">true</param> 
      </result> 
     </action> 

HomeCesta.java

public String ajaxCantidad() throws Exception { 

     c = ControladoresDAO.cCesta.RecuperaPorId(clave); 
     c.setCestaUnidades(cantidad); 
     ControladoresDAO.cCesta.Modifica(c); 
     stateMap3.clear(); 
     stateMap3.put("", ""+cantidad); 
     return SUCCESS; 

    } 

我的問題是,在迭代器中,只刷新了id爲cantidadIndividual的第一個輸入,但如果我使用圖像Signo_Mas.png在第二個,第三個按鈕中單擊,則該值將顯示在第一個輸入中,id爲cantidadIndividual 。

回答

0

當您使用document.getElementById("cantidadIndividual")時,只返回具有相同ID的第一個元素。您應該將id更改爲每次迭代都是唯一的。

您可以使用一個變量在JSP中

document.getElementById("cantidadIndividual${uniqueIdentifier}") 

,或者如果您使用的是Struts2的

document.getElementById("cantidadIndividual<s:property value='%{uniqueIdentifier}'/>")