Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/04/2012, 07:23
huaymas
 
Fecha de Ingreso: marzo-2009
Mensajes: 31
Antigüedad: 15 años, 1 mes
Puntos: 0
Implementar jquery en sistema con struts

Hola gente como estan, tengo una consulta, trabajo en una empresa, y realizamos un sistema para una fabrica, todo anda bien pero hay un problema con las ñ a la hora de cargar unos combos anidados de primra cargo bien los datos del primer combo con el action, pero el tema es mostrar los datos del combo anidado primero lo hacia asi.

Código Java:
Ver original
  1. function clearElements(combo){  
  2.       combo.options.length = 0;  
  3.       nuevaOpcion = new Option("", "");        
  4.       combo.options[0] = nuevaOpcion;
  5.       i = 0;
  6.       var insumo = document.forms[0].insumo.options[document.forms[0].insumo.selectedIndex].value;
  7.       if(insumo != '')
  8.          opcionSeleccionar = new Option('Cargando...', '');
  9.       else
  10.          opcionSeleccionar = new Option('Seleccionar', '');      
  11.       combo.options[i] = opcionSeleccionar;
  12. }
  13. function reloadProveedores()    {      
  14.        clearElements(document.forms[0].proveedor);
  15.        var id = document.forms[0].insumo.value;
  16.        new Ajax.Request('<html:rewrite page="/reloadProveedor.do"/>', {
  17.           parameters: {insumoId: id},
  18.           onComplete: function(transport, json) {                
  19.             if(json.executeError){
  20.                 alert(json.executeError);
  21.             }
  22.             i = 0;  
  23.             while (i < json.length){
  24.                 var property = json[i].insumoProveedorId;
  25.                 var nom = json[i].nombreProveedor;
  26.                 nom = nom.replace(/&Ntilde;/g, 'Ñ');
  27.                 propertyLabel = nom;
  28.                 //9999: es usado para guardar la denominación de la unidad
  29.                 if(property != '9999'){
  30.                     nuevaOpcion = new Option(propertyLabel, property);        
  31.                     document.forms[0].proveedor.options[i] = nuevaOpcion;
  32.                 }else{
  33.                     document.forms[0].unidad.value = propertyLabel;
  34.                 }                      
  35.                 i++;
  36.             }          
  37.             //pregunto si es igual a 1 porque siempre va a venir almenos la unidad
  38.             if(json.length == 1){
  39.                 opcionSeleccionar = new Option('Seleccionar', '');
  40.                 document.forms[0].proveedor.options[0] = opcionSeleccionar;        
  41.             }    
  42.           }
  43.        }); 
  44. }

y el action que carga el segundo combo
Código Java:
Ver original
  1. @Override
  2.     public ActionForward execute(ActionMapping mapping, ActionForm form,
  3.             HttpServletRequest request, HttpServletResponse response) throws Exception {
  4.  
  5.        
  6.         String insumoId = request.getParameter("insumoId");
  7.         logger.debug("insumoId para ajax: " + insumoId);
  8.         reloadProveedor(request, response, insumoId);
  9.  
  10.         List<Insumo> listaInsumos = getServicioMaster().getInsumoDao().findAllEnableds();
  11.        
  12.         request.setAttribute("insumos", listaInsumos);
  13.         List<UbicacionInsumo> listUbicaciones = getServicioMaster().getUbicacionInsumoDao().findAll();
  14.         request.setAttribute("ubicaciones", listUbicaciones);
  15.        
  16.        
  17.         return mapping.findForward(FORWARD_INIT);
  18.        
  19.     }
  20.  
  21.    
  22.     public void reloadProveedor(HttpServletRequest request,
  23.             HttpServletResponse response, String insumoId)
  24.             throws Exception
  25.         {
  26.  
  27.             if (insumoId != null && StringUtils.isNotEmpty(insumoId)) {
  28.                 Insumo insumo = (Insumo) getServicioMaster().getInsumoDao().findInsumo(Integer.parseInt(insumoId));
  29.                
  30.                 List<ProveedorInsumo> objects = getServicioMaster().getProveedorInsumoDao().findProveedoresInsumo(Integer.parseInt(insumoId));
  31.                 request.setAttribute("proveedores", objects);
  32.                 logger.debug("Cantidad de proveedores: "+objects.size());
  33.                 JSONArray json = new JSONArray();
  34.                 for(ProveedorInsumo proveedorInsumo: objects){
  35.                     JSONObject jsonObject = new JSONObject();                  
  36.                     jsonObject.put("insumoProveedorId", proveedorInsumo.getProveedorInsumoId());
  37.                     jsonObject.put("nombreProveedor", cambio(proveedorInsumo.getProveedor().getNombre()));                 
  38.                     json.add(jsonObject);
  39.                 }
  40.                
  41.                 //Agrego un objeto mas para llevar la denominación de la unidad a la vista
  42.                 JSONObject jsonObject = new JSONObject();
  43.                 jsonObject.put("insumoProveedorId", "9999");
  44.                 jsonObject.put("nombreProveedor", insumo.getUnidad().getDenominacion());
  45.                 json.add(jsonObject);
  46.                
  47.  
  48.                 response.setHeader("X-JSON", json.toString());
  49.             }
  50.         }  
  51.     private String cambio(String nomenclatura){
  52.         String nom = nomenclatura;
  53.         String search = "Ñ";
  54.         String sub = "&Ntilde;";
  55.         String result = "";
  56.         int i;
  57.         do {
  58.             i = nom.indexOf(search);
  59.             if (i != -1) {
  60.                 result = nom.substring(0,i);
  61.                 result = result + sub;
  62.                 result = result +nom.substring(i + search.length());
  63.                 nom = result;
  64.             }
  65.            
  66.         } while (i != -1);
  67.         return nom;
  68.     }

le agregue una modificacion el cual buscaba en cada objeto si tenia una Ñ o ñ y lo remplazaba por "&Ntilde;" y al reves en el javascript de la jsp cambiaba "&Ntilde;" por Ñ o ñ.