Templates mit jdk.httpserver nutzen
ulrich
2021-09-29 47bd6be69876df6b96ea201c947a2c7b238b785a
src/de/uhilger/httpserver/template/TemplateActor.java
@@ -45,7 +45,7 @@
  public static final String STR_EMPTY = "";
  public static final String STR_SLASH = "/";
  
  public static final String ATTR_TEMPLATE = "template";
  //public static final String ATTR_TEMPLATE = "template";
  
  //public static final String WELCOME_FILE = "index.htmi";
  
@@ -63,19 +63,22 @@
   * @return das ausgefuellte Template
   * @throws IOException 
   */
  public String render(HttpExchange exchange, Map data) throws IOException {
  public String render(HttpExchange exchange, Object data, String template) throws IOException {
    MustacheFactory mf;
    Mustache m;
    HttpHelper helper = new HttpHelper();
    Map attributes = exchange.getHttpContext().getAttributes();
    String fileBase = helper.getAttrStr(attributes, FileHandler.ATTR_FILE_BASE, STR_EMPTY);
    File fileRoot = new File(fileBase);    
    String template = helper.getAttrStr(attributes, ATTR_TEMPLATE, STR_EMPTY);
    logger.fine("fileRoot: " + fileRoot.getAbsolutePath());
    //String template = helper.getAttrStr(attributes, ATTR_TEMPLATE, STR_EMPTY);
    File templateFile = new File(fileRoot, template);
    if(templateFile.exists()) {
      logger.fine("using template " + templateFile.getAbsolutePath());
      mf = new NeonMustacheFactory(fileRoot);
      m = mf.compile(template);
    } else {
      logger.fine("template " + templateFile.getAbsolutePath() + " not found");
      mf = new NeonMustacheFactory();
      m = mf.compile(template);
    }