Grails新手在这里。我的应用程序是在Grails中,我的IDE是IntelliJ IDEA。我配置我的项目(在IntelliJ中)说我的资源文件夹在root\src\resources
下。我有一个图像文件,我需要加载到InputStream / BufferedImage。但是,我似乎无法从我的Grails控制器获取这些资源。这就是我的尝试:
def image = this.getClass().getClassLoader().getResourceAsStream("image.png")
但这只会返回null
。我在Java项目中使用这个完全相同的约定(好吧,除了我必须声明图像是InputStream类型),它确实在那里工作。我的印象是,我基本上可以在Grails项目中删除Java代码,它应该可以工作。为了让它在Grails控制器中工作,我需要做些什么?我需要访问该静态资源文件。
答案 0 :(得分:2)
如果在IntelliJ IDEA中将目录标记为源目录,Grails将不会知道它。您必须通过将新目录添加为源目录或将资源移动到其中一个标准源目录来正确配置Grails。
我自己从未真正添加过新的源目录,但this stackoverflow问题的答案看起来很有希望。
除此之外,您只需将资源添加到任何源目录,它就会被包含在内,例如:grails-app/conf
,src/java
,src/groovy
等等。此外,web-app/META-INF/classes
中的任何文件也将位于应用程序的类路径中。最后一个很好知道你是否需要复制一个java或groovy源文件(即只是复制,没有编译)。
答案 1 :(得分:0)
试试这个
servletContext.getResourceAsStream("/WEB-INF/resources/yourfile")