【问题标题】:Spring Web: Getting file from web context using Resource?Spring Web:使用资源从 Web 上下文中获取文件?
【发布时间】:2010-06-10 20:42:53
【问题描述】:

有没有办法使用简单的资源在 Spring Web 应用程序中获取资源?我试图不传递任何上下文,并且需要从 WEB-INF/freemarker/email/ 目录中获取文件。

【问题讨论】:

    标签: java spring servlets resources


    【解决方案1】:

    没有。由于WEB-INF/freemaker/email 在类路径中不是,因此您需要传递ServletContext。正如您提到的Resource,您可以使用:

    Resource resource = new ServletContextResource(servletContext, resourcePath);
    

    只是不要将ServletContext 传递给服务层。改为传递Resource

    如果您想从类路径中获取模板,请将其放在那里。也就是说,例如在:

    WEB-INF/classes/freemaker/email

    那么你可以使用ClassPathResource

    【讨论】:

    • 特别是在这种情况下,我正在尝试获取一个 freemarker 模板 - 即使使用 ClasspathResource,并将完整的文件名传递给 Freemarker 模板,我也会遇到异常。我只是在寻找从类路径获取 ftl 的最简单方法。你有什么想法,还是我应该创建一个新问题?
    【解决方案2】:

    您可以在您的类中实现 org.springframework.context.ResourceLoaderAware 接口并访问 ResourceLoader。它相当容易使用。

    public class SomeService implements ResourceLoaderAware {
       private ResourceLoader resourceLoader;
    
       public void doSomething() {
           Resource skin = resourceLoader.getResource("myfile.txt");
       }
    
        @Override
        public void setResourceLoader(ResourceLoader resourceLoader) {
            this.resourceLoader = resourceLoader;
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-11
      • 1970-01-01
      • 2010-11-25
      • 1970-01-01
      相关资源
      最近更新 更多