views:

244

answers:

3

I have a couple of Javascript libraries of my own that do some nice prettyfying of my HTML pages and I want to include them in my gsp pages, particularly the landing page of my app. I have tried putting them in views folder and web-app/js and $APP_HOME/scripts but when I load my index.gsp the scripts don't show up.

I have also tried a variety of alternatives in my code none of which work...

<script src="mylib.js" type="text/javascript"></script>
<script src="js/mylib.js" type="text/javascript"></script>
<script src="scripts/mylib.js" type="text/javascript"></script>

I'm sure there is a clever grails way of doing this on the fly, but I really just want a location where I can place some boilerplate JavaScript code that I can use in my app. With convention over configuration in mind, what is the expected practice?

A: 

I think I found the answer...

If I use this tag in my gsp (rather than a straightforward javascript reference)

<g:javascript library="mylib" />     

Then when I look at the generated page source it refers to

<script type="text/javascript" src="/myapp/js/mylib.js"></script>

This corresponds to the folder web-app/js, so I dropped my script library in there and it works fine. The breakthrough was for me to a) rename my index.html to index.gsp and b) use the g:javascript tag.

Simon
yep exactly - I need to type more quickly :)
Will Prescott
post the same answer and I'll upvote ya!
Simon
shoot, you type fast
Simon
+2  A: 

With your JS file at: web-app/js/myLib.js, putting <g:javascript library="myLib" /> in your layout should I think be what you need.

Will Prescott
+1  A: 

You should probably NOT use <g:javascript library="myLib" /> as that is meant to be used as a way to make AJAX calls library (scriptaculous, dojo, yahoo, jquery) indifferent. See http://grails.org/doc/latest/ref/Tags/javascript.html. Instead use <g:javascript src="myLib" />.

Zach