2017-03-18 8 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の2番目、3番目のボタンをクリックした場合、値はidの最初の入力に表示されますcantidadIndividual 。

答えて

0

document.getElementById("cantidadIndividual")を使用すると、同じIDを持つ最初の要素のみが返されます。各イテレーションで一意になるようにIDを変更する必要があります。

あなたはこの

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

または使用している場合はStruts2の

document.getElementById("cantidadIndividual<s:property value='%{uniqueIdentifier}'/>") 
のようにJSPで変数を使用することができます

関連する問題