Enviar parámetros ocultos por la url
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.
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:
Invocando una función a través de POST con ajax.
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.
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"
}
}