13

how can i pass parameters to a groovy server page via a controller that are not an instance of a domain class ?

SomeEUGuy
  • 187
  • 1
  • 1
  • 7

4 Answers4

22

You put your parameters into the model object map returned to your GSP, for example:

def index = { def hobbies = ["basketball", "photography"] 
render(view: "index", model: [name: "Maricel", hobbies: hobbies]) }

Then you get those values accessing them by the name you use in your model map, for example:

My name is ${name} and my hobbies are:
<ul>
<g:each in="${hobbies}" var="hobby">
<li>${hobby}</li>
</g:each>
</ul>

That should display the following:

My name is Maricel and my hobbies are:

 - basketball
 - photography
Maricel
  • 2,089
  • 13
  • 17
8

The clearest way is probably to return a map from your controller action:

...
def myAction = {
    [myGreeting: "Hello there, squire!"]
}
...

Now you can access that parameter in your GSP page (by default myAction.gsp):

...
<p><%= myGreeting %></p>
...

More details here: http://grails.org/doc/latest/guide/6.%20The%20Web%20Layer.html#6.1.3%20Models%20and%20Views

Martin Dow
  • 5,273
  • 4
  • 30
  • 43
7

You can do it like this :

In the controller:

def myaction = {
    String name = "Tony Danza"
    [name: name]
}

In the gsp page you can view the name like so:

<body>
    My name is ${name}
</body>
OverZealous
  • 39,252
  • 15
  • 98
  • 100
Thando
  • 71
  • 1
0

You return the parameters in the closure of the controller that has the same name as the gsp.

Navi
  • 8,580
  • 4
  • 34
  • 32