Código Java:
Ver original
function clearElements(combo){ combo.options.length = 0; combo.options[0] = nuevaOpcion; i = 0; var insumo = document.forms[0].insumo.options[document.forms[0].insumo.selectedIndex].value; if(insumo != '') else combo.options[i] = opcionSeleccionar; } function reloadProveedores() { clearElements(document.forms[0].proveedor); var id = document.forms[0].insumo.value; parameters: {insumoId: id}, onComplete: function(transport, json) { if(json.executeError){ alert(json.executeError); } i = 0; while (i < json.length){ var property = json[i].insumoProveedorId; var nom = json[i].nombreProveedor; nom = nom.replace(/Ñ/g, 'Ñ'); propertyLabel = nom; //9999: es usado para guardar la denominación de la unidad if(property != '9999'){ document.forms[0].proveedor.options[i] = nuevaOpcion; }else{ document.forms[0].unidad.value = propertyLabel; } i++; } //pregunto si es igual a 1 porque siempre va a venir almenos la unidad if(json.length == 1){ document.forms[0].proveedor.options[0] = opcionSeleccionar; } } }); }
y el action que carga el segundo combo
Código Java:
Ver original
@Override public ActionForward execute(ActionMapping mapping, ActionForm form, logger.debug("insumoId para ajax: " + insumoId); reloadProveedor(request, response, insumoId); List<Insumo> listaInsumos = getServicioMaster().getInsumoDao().findAllEnableds(); request.setAttribute("insumos", listaInsumos); List<UbicacionInsumo> listUbicaciones = getServicioMaster().getUbicacionInsumoDao().findAll(); request.setAttribute("ubicaciones", listUbicaciones); return mapping.findForward(FORWARD_INIT); } public void reloadProveedor(HttpServletRequest request, HttpServletResponse response, String insumoId) throws Exception { if (insumoId != null && StringUtils.isNotEmpty(insumoId)) { List<ProveedorInsumo> objects = getServicioMaster().getProveedorInsumoDao().findProveedoresInsumo(Integer.parseInt(insumoId)); request.setAttribute("proveedores", objects); logger.debug("Cantidad de proveedores: "+objects.size()); JSONArray json = new JSONArray(); for(ProveedorInsumo proveedorInsumo: objects){ JSONObject jsonObject = new JSONObject(); jsonObject.put("insumoProveedorId", proveedorInsumo.getProveedorInsumoId()); jsonObject.put("nombreProveedor", cambio(proveedorInsumo.getProveedor().getNombre())); json.add(jsonObject); } //Agrego un objeto mas para llevar la denominación de la unidad a la vista JSONObject jsonObject = new JSONObject(); jsonObject.put("insumoProveedorId", "9999"); jsonObject.put("nombreProveedor", insumo.getUnidad().getDenominacion()); json.add(jsonObject); response.setHeader("X-JSON", json.toString()); } } int i; do { i = nom.indexOf(search); if (i != -1) { result = nom.substring(0,i); result = result + sub; result = result +nom.substring(i + search.length()); nom = result; } } while (i != -1); return nom; }
le agregue una modificacion el cual buscaba en cada objeto si tenia una Ñ o ñ y lo remplazaba por "Ñ" y al reves en el javascript de la jsp cambiaba "Ñ" por Ñ o ñ.