使用 javascript 更改 struts2 迭代器内的输入值
Change value of input inside an struts2 iterator using javascript
我需要更改 struts2 的迭代器内的输入类型文本的值。我不喜欢刷新所有页面,我喜欢只刷新输入的值,我认为使用 JSON 可能是一个解决方案(我不确定这是否是最好的方法,我'我是初级程序员...)
这是我的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.
的第一个输入
当您使用 document.getElementById("cantidadIndividual")
时,仅返回具有相同 ID 的第一个元素。您应该将 id 更改为对每次迭代都是唯一的。
您可以像这样在 JSP 中使用变量
document.getElementById("cantidadIndividual${uniqueIdentifier}")
或者如果您使用的是 Struts2
document.getElementById("cantidadIndividual<s:property value='%{uniqueIdentifier}'/>")
我需要更改 struts2 的迭代器内的输入类型文本的值。我不喜欢刷新所有页面,我喜欢只刷新输入的值,我认为使用 JSON 可能是一个解决方案(我不确定这是否是最好的方法,我'我是初级程序员...)
这是我的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.
的第一个输入当您使用 document.getElementById("cantidadIndividual")
时,仅返回具有相同 ID 的第一个元素。您应该将 id 更改为对每次迭代都是唯一的。
您可以像这样在 JSP 中使用变量
document.getElementById("cantidadIndividual${uniqueIdentifier}")
或者如果您使用的是 Struts2
document.getElementById("cantidadIndividual<s:property value='%{uniqueIdentifier}'/>")