2016-07-14 77 views
0

我做了一個小的web應用程序,我想在索引頁的底部添加積分註釋。從WAR文件的html頁面中移除註釋很容易。所以我想我可以修改資源 '的index.html' 是這樣的:如何修改Spring Boot中的靜態資源index.html?

public class MainPageTransformer implements ResourceTransformer { 
    @Override 
    public Resource transform(HttpServletRequest request, Resource resource, ResourceTransformerChain transformerChain) throws IOException { 
     String html = IOUtils.toString(resource.getInputStream(), UTF_8); 
     html = html.replace("</body>", "<div style=\"position: absolute; bottom: 5px;\">Autor</div>\n</body>"); 
     return new ByteArrayResource(html.getBytes()); 
    } 
} 

...和:執行MainPageTransformer.transform方法

@Configuration 
public class WebMvcConfig extends WebMvcConfigurerAdapter { 
    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     registry.addResourceHandler("/client/index.html") 
       .addResourceLocations("classpath:/static/client") 
       .resourceChain(false) 
       .addTransformer(new MainPageTransformer()); 
    } 
} 

後,它拋出異常:

java.io.FileNotFoundException: Byte array resource [resource loaded from byte array] cannot be resolved to absolute file path 
at org.springframework.core.io.AbstractResource.getFile(AbstractResource.java:114) 
at org.springframework.core.io.AbstractResource.getFileForLastModifiedCheck(AbstractResource.java:169) 
at org.springframework.core.io.AbstractResource.lastModified(AbstractResource.java:153) 
at org.springframework.web.servlet.resource.ResourceHttpRequestHandler.handleRequest(ResourceHttpRequestHandler.java:240) 
at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:51) 
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) 
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) 
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:968) 
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:859) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:618) 

我該怎麼做?有沒有更好的方法來實現我的目標?非常感謝!

回答

1

我今天遇到這個,試試用org.springframework.web.servlet.resource.TransformedResource

public class MainPageTransformer implements ResourceTransformer { 
@Override 
public Resource transform(HttpServletRequest request, Resource resource, ResourceTransformerChain transformerChain) throws IOException { 
    String html = IOUtils.toString(resource.getInputStream(), UTF_8); 
    html = html.replace("</body>", "<div style=\"position: absolute; bottom: 5px;\">Autor</div>\n</body>"); 
    return new TransformedResource(resource, html.getBytes()); 
    } 
} 
+0

驚人的這是多麼難找到哈哈。我想這不是一個特別常見的用例。感謝分享! – misaka