I ran into an weird bug today that took awhile to figure out. Basically, I was getting the error when I deployed some grails code to a linux box.
In the error log, this is what showed up:
ERROR view.ScaffoldingViewResolver - Error generating scaffolded view [/BNice/index]: /opt/grails-1.3.7/src/grails/templates/scaffolding/index.gsp (No such file or directory) java.io.FileNotFoundException: /opt/grails-1.3.7/src/grails/templates/scaffolding/index.gsp (No such file or directory) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.<;init>;(FileInputStream.java:120) at org.grails.plugin.resource.DevModeSanityFilter.doFilter(DevModeSanityFilter.groovy:44) at java.lang.Thread.run(Thread.java:680)
And, in the HTML response, this is what showed up:
HTTP status 404 - /testapp/WEB-INF/grails-app/views/BNice/index.jsp type: Status report message: /testapp/WEB-INF/grails-app/views/BNice/index.jsp description: The requested resource (/testapp/WEB-INF/grails-app/views/BNice/index.jsp) is not available.
It took a while, but I finally figured out that it had nothing to do with the server setup, but was in fact an issue with the code.
In the project, there was a controller called “BNiceController”. When grails sees to capital letters in the beginning of a name, the CamelCasing of the controller and the views must be exactly like first part of the controller.
Here’s how a normal reference would look for a controller called BeNiceController.
// In the gsp, the controller would be referenced like so: ${createLink(controller: 'beNice')} // The view would be located in /grails-app/views/beNice/index.gsp
However, if the controller is called BNiceController, this is what you would have to do. Notice, the folder in the views directory is “BNice”.
// In the gsp, the controller would be referenced like so: ${createLink(controller: 'BNice')} // The view would be located in /grails-app/views/BNice/index.gsp
It’s kind of annoying. I wish this wasn’t the default behavoir.