2016-12-11 17 views
0

我是spark的新开发者,现在我被一个问题阻止了。 我是实现freemarker作为网页模板。 修改.ftl文件时不像其他框架,您不需要重新启动服务器。 但现在在我的本地它必须重新启动服务器,如果我想看到更改。 以下是代码。sparkjava(java webframe)如何自动刷新页面

public class SparkServer { 
public static void main(String[] args){ 
    get("/hello",(request,response) ->{ 
     Map root = new HashMap(); 
     root.put("user", "xiekakaban"); 
     Map product = new HashMap(); 
     product.put("name","Pringles"); 
     product.put("price",13.2); 
     root.put("product",product); 
     return new ModelAndView(root,"test.ftl"); 
    },FreeMarkerEngine.getInstance()); 
} 

}

public class FreeMarkerEngine extends TemplateEngine{ 
private static FreeMarkerEngine freeMarkerEngine; 
private Configuration freeConfig; 

private FreeMarkerEngine() throws IOException{ 
    freeConfig = new Configuration(); 
    freeConfig.setDirectoryForTemplateLoading(StringUtil.getResourceFile("templates")); 
    freeConfig.setTemplateUpdateDelay(1); 

} 
public static FreeMarkerEngine getInstance(){ 
    if(freeMarkerEngine == null){ 
     try { 
      freeMarkerEngine = new FreeMarkerEngine(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
      System.exit(0); 
     } 
    } 
    return freeMarkerEngine; 
} 
@Override 
public String render(ModelAndView modelAndView) { 
    StringWriter stringWriter = new StringWriter(); 
    try { 
     freeConfig.clearTemplateCache(); 
     freeConfig.clearSharedVariables(); 
     freeConfig.clearEncodingMap(); 
     Template template = freeConfig.getTemplate(modelAndView.getViewName()); 
     template.process(modelAndView.getModel(), stringWriter); 
     System.out.println(stringWriter.toString()); 
     return stringWriter.toString(); 
    } catch (IOException | TemplateException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return "Can not find the template:"+modelAndView.getViewName(); 
} 

}

我`吨确定它是否是由缓存火花或freemarker.But我有明确的FreeMarker缓存。

任何人都可以帮到我.....

回答