2014-10-31 59 views
1

Grails新手在这里。我的应用程序在Grails中,我的IDE是IntelliJ IDEA。我配置了我的项目(在IntelliJ中),说我的资源文件夹在root\src\resources之下。我有一个图像文件,我需要加载到InputStream/BufferedImage中。但是我似乎无法从我的Grails控制器获取这些资源。这就是我想要的:如何访问Grails项目中的Java资源?

def image = this.getClass().getClassLoader().getResourceAsStream("image.png") 

但是,这只是返回null。我在Java项目中使用了完全相同的约定(好吧,除了我必须声明图像是InputStream类型),并且它在那里工作。我的印象是,我基本上可以将Java代码放在Grails项目中,它应该可以工作。我需要采取什么不同的方式才能在我的Grails控制器中工作?我需要访问该静态资源文件。

回答

2

如果您在IntelliJ IDEA中将目录标记为源目录,Grails将不会知道它。您必须通过将新目录添加为源目录或将资源移动到其中一个标准源目录来正确配置Grails。

我从来没有真正添加过一个新的源代码目录,但是对于this stackoverflow问题的回答看起来很有希望。

除此之外,您可以将资源添加到任何源目录并将其包含在内,例如:grails-app/conf,src/javasrc/groovy等。此外,web-app/META-INF/classes中的任何文件也将位于应用程序的类路径中。最后一个很好理解你是否需要复制一个java或groovy源文件(即只复制,不编译)。

0

试试这个

servletContext.getResourceAsStream("/WEB-INF/resources/yourfile") 
+0

感谢您的建议。我试过这个,但它仍然返回'null' – SoaperGEM 2014-10-31 17:57:55