Tengo una lista de objetos Team
que tienen una propiedad Integer seed
. Quiero editar todas las semillas de los equipos a la vez, en una sola forma. Estoy seguro que Grails admite parámetros indexados, pero no puedo hacer que funcione.Grails indexed parameters
Esto es lo que tengo, y funciona pero estoy saltando a través de manera demasiados aros y tiene que haber una manera mejor.
gsp:
<g:form action="setSeeds">
...
<g:each in="${teams}" status="i" var="team">
<input type="hidden" name="teams[${i}].id" value="${team.id}">
<input type="text" size="2" name="teams[${i}].seed" value="${team.seed}">
</g:each>
</g:form>
controlador:
def setSeeds = {
(0..<30).each { i ->
def team = Team.get(Integer.parseInt(params["teams[${i}].id"]))
team.seed = Integer.parseInt(params["teams[${i}].seed"])
}
redirect(action:list)
}
¿No es horrible? Demasiado ruido. ¿Cómo puedo hacer algo en la línea de:
params.teams.each { t ->
def team = Team.get(t.id)
team.seed = t.seed
}
Es decir, ¿cómo Mapa params nombrados team[0].seed
, team[0].id
, team[1].seed
, team[1].id
a una lista?
En Stripes puede tener una propiedad List<Team>
y simplemente funcionará. ¡No espero menos de Grails! ;-)
Gracias de antemano por su ayuda.
Ya estoy usando un cierre para crear un formulario. La pregunta es, ¿cómo recupero los parámetros indexados en el controlador para construir una lista? – foxdonut