2015-06-02 2 views
2

Я пытаюсь использовать усы, чтобы заполнить html для меня, тогда я хочу получить этот html и использовать его как String.Как получить усы html в java

шаблон, как это -> template.xhtml

<table style="width:10%" align="center"> 
    <tr> 
     <th>Old</th> 
     <th>New</th> 
    </tr> 
    <tr> 
     <td>{{old}}</td> 
     <td>{{new}}</td>         
    </tr> 
</table> 

С Hash, как это:

HashMap<String, String> scopes = new HashMap<String, String>(); 
    scopes.put("old", "Testing"); 
    scopes.put("new", "Mustache"); 

Теперь, как я говорю, Усы использовать template.xhtml и заправить областей и то верните мне html?

ответ

0
String aux = "";  
MustacheFactory mf = new DefaultMustacheFactory(); 
    Mustache mustache = mf.compile("path/to/file.html"); 
    StringWriter stringWriter = new StringWriter(); 
    mustache.execute(stringWriter, wrapper); 
    aux = stringWriter.toString(); 
    System.out.println(aux); 
1

Посмотрите на самую нижнюю часть файла readme проекта Mustache (https://github.com/spullara/mustache.java#readme). Там есть пример main, который делает почти то, что вам нужно. Просто используйте StringWriter вместо OutputStreamWriter, чтобы получить полученный HTML-код как String.

+1

@bacoco Похоже, что ваша карта 'scopes' имеет проблему - в' HashMap' вы не можете иметь несколько ключей с тем же именем. Итак, сначала вы вставляете 'Testing' под ключом' old', а затем вы заменяете его, вставляя 'Old' под ключом' old'. Кроме того, карта не содержит запись «list», которую ожидает шаблон, поэтому Mustache просто пропускает этот раздел и даже не пытается читать «новые» и «старые» ключи. – neuronaut

0

сталкиваюсь тот же вопрос в Android, я разобрать HTML в строку так:

public static String readInputStreamAsString(InputStream in) 
     throws IOException { 

    BufferedInputStream bis = new BufferedInputStream(in); 
    ByteArrayOutputStream buf = new ByteArrayOutputStream(); 
    int result = bis.read(); 
    while(result != -1) { 
     byte b = (byte)result; 
     buf.write(b); 
     result = bis.read(); 
     buf.flush(); 
    } 
    return buf.toString(); 
} 

заполнить шаблон в данных:

Map<String, String> data = new HashMap<>(); 
    data.put("data", "123"); 
    data.put("read_mode","day"); 
    data.put("font_size","small"); 
    Template tmpl = Mustache.compiler().compile(readInputStreamAsString(***InputStream))); 
    String html = tmpl.execute(data); 

Это работает отлично.