iberck
11/2/2016 - 5:08 AM

Enviar parámetros ocultos por la url

Enviar parámetros ocultos por la url

Parámetros por GET

Cualquier parámetro enviado a través del método GET será mostrado en la URL, es decir cualquier parámetro mandado a través de un <a href> será mostrado en la URL. En grails cualquier parámetro enviado a través del atributo params será enviado a través de la URL, incluso el params de un <g:form>.

No existe un estandar máximo sobre el número de caracteres en una url, sin embargo url's con más de 2000 caracteres no funcionarán en la mayoría de los browsers.

Parámetros por POST

Cualquier parámetro enviado por POST nunca será mostrado en la URL. Por ejemplo, todo parámetro que se encuentre dentro de un formulario y sea enviado, no se mostrará en la URL.

Otra manera de prevenir que no se muestren las variables en la URL es:

  1. Invocando una función a través de POST con ajax.

  2. Haciendo una redirección desde el controlador y metiendo las variables al flash scope. La primer petición tendrá las variables en la url pero cuando llegue al controlador y haga la redirección, dichas variables se ocultarán cuando se muestre la segunda petición.

  3. Cambiando el valor de un hidden al hacer submit:

<html>
<head>
    <script>
        function handleClick(val) {
            $("#mid").val(val);
            return true;
        }
    </script>
</head>

<body>

<g:form action="formSubmit">
    <g:hiddenField name="mid"/>
    <g:submitButton name="submit1" value="enviar" onclick="return handleClick(5);"/>
</g:form>

</body>

</html>
class TestController {

    def index() {
    }

    def formSubmit(String mid) {
        log.info("mid=$mid")
        render view: "index"
    }

}