Paso de variables de js a java

publicado por: Anonymous

No sé cómo coger una variable declarada en javascript, desde una clase de java.

¿Alguna sugerencia?

var ratiosObj = {ratios:[{idRatio:1,Descripcion:"HoraMaxima",horas:10,Descuento:5}]};
var fila = 2;
var horas = "horas";
var horasFin;
var precioMax = "precioMax";
var precioMaxFin ;
$(document).ready(function(){
    ratiosObj.ratios.push({idRatio:1,Descripcion:"assdsds",});
    $("#add").on("click",function(){
        horasFin = "horas" + fila;
        precioMaxFin = "precioMax" + fila;
        $clone=$("#ratios tbody tr:first").clone();
        $clone.find("input:eq(0)").each(function(){
            $(this).val("");
            $(this).attr("name",horasFin);
        });
        $clone.find("input:eq(1)").each(function(){
            $(this).val("");
            $(this).attr("name",precioMaxFin);
        });
        $("#ratios tbody").append($clone);
        fila++;
    });
});

public static void modificarRatios (HttpServletRequest request, HttpServletResponse response, BaseWeb base) {
        HttpSession session = request.getSession();

        ZonasControlador zonaContr = new ZonasControlador(base.getVariablesGlobales());
        ParticipantePOJO vParticipante = (ParticipantePOJO)session.getAttribute("Participante");



        try{

        }catch(Exception ex){
            base.getLoggerGarageScanner().error("Se ha producido un error");
            request.setAttribute("errorpanelcontrol", "propietariocomunidaderrorcarga");
        }
        finally{

        }
        PropietarioWebControler.cargarcomunidades(request, response, base);
    }

Explico un como com va, el jquery, lo que haces es meter filas a una tabla, pero necesito meter los name, en un objeto para pasarlo a la clase de java. No se muy bien como hacerlo, pero esto es la idea mas o menos de como hacerlo

solución

Tienes que entender dos conceptos:

  • Lado servidor
  • Lado cliente (navegador)

Ambos son dos entornos separados donde la única vía de comunicación son peticiones HTTP. Si necesitas usar una variable declarada en el cliente en el servidor, necesitas enviarla en una petición HTTP al servidor.

Hay dos formas de hacer esto: mediante una petición normal y mediante una asíncrona. La primera forma es realmente sencilla, solo necesitas enviar el valor de la variable por la URL o por el cuerpo de la petición:

window.location = 'http://localhost:8080/controller/action?variable=valor

En caso sea una petición POST, se hace mediante un formulario:

<form 
  id="form1" 
  action="http://localhost:8080/controller/action" 
  method="POST"
>
  <input type="hidden" />
  <input type="submit" value="Enviar">
</form>

// código JS
document
  .getElementById('form1')
  .addEventListener('submit', function (e) {
    e.preventDefault()
    this.value = variableAEnviar
    this.submit()
  })

La otra opción es mediante una petición asíncrona, es decir, AJAX. Este tipo de peticiones tiene la peculariedad que no necesita hacer una recarga del documento al enviar la petición y obtienes la respuesta del servidor en forma de texto (que dependiendo del formato en que lo envies puede ser parseado).

fetch('http://localhost:8080/controller/action', {
  method: 'POST',
  body: JSON.stringify({ variable: variableAEnviar })
})
.then(res => res.json()) // en caso obtengas una respuesta en JSON
.then(data => console.log(data))
.catch(err => console.error(err))

Hay múltiples librerías para peticiones AJAX además del estándar fetch, como por ejemplo request, superagent y axios.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *