Справочная информация:
У меня есть веб-сервис, который раньше только получал запросы на xml, но теперь должен вернуть html для доступа через браузер.
У меня есть класс Java, который сопоставлен с XML с аннотацией XmlRootElement.
Я использую Freemarker для генерации HTML на основе этого класса Java, но не могу найти способ сделать это напрямую.
В данный момент я использую NodeModel.parse для разбора xml на модель данных freemarker, но поскольку NodeModel.parse принимает файл, я сначала записываю объект Java в файл. Это, очевидно, неэффективный способ сделать это, но он выполняет свою работу.
Кто-нибудь знает способ получить модель данных freemarker из этого класса Java без предварительной записи его в файл XML?
Вот мой код:
Сопоставленный класс Java-to-Schema:
@XmlRootElement(name = "report")
public class Report {
private String id;
private String time;
public Report() {}
public String getTime() {return time;}
public void setTime(String time) {this.time = time;}
public String getId() {return this.id;}
public void setId(String id) {this.id = id;}
}
Слияние данных с шаблоном:
public String getReportsAsHtml(@QueryParam("lastUpdate") String lastUpdate){
MySQLAccess dao = new MySQLAccess();
List<Report> reports = dao.readReports(lastUpdate);
Template temp = TemplateConfiguration.getInstance().getTemplateConfiguration().getTemplate("list_template.ftl");
**HashMap<String, NodeModel> root = new HashMap<String, NodeModel>();**
**root.put("doc", NodeModel.parse(Java2XML.getXMLFromJava(reports)));**
StringWriter output = new StringWriter();
temp.process(root, output);
output.flush();
return output.toString();
}