背景: これまではxmlのリクエストを受信しただけでしたが、ブラウザアクセスのためにhtmlを返す必要があるwebserviceがあります。 XmlRootElementアノテーションを使用してXMLにマップされたJavaクラスがあります。FreemarkerデータモデルとしてJava-to-schemaのマップオブジェクトを使用する
私はこのJavaクラスに基づいてHTMLを生成するためにFreemarkerを使用していますが、その方法を直接見つけることはできません。
現在のところ、NodeModel.parseを使用してxmlをfreemarkerデータモデルに解析していますが、NodeModel.parseがFileを受け取るので、まずJavaオブジェクトをファイルに書き込みます。それは明らかにそれを行うには非効率的な方法ですが、それは仕事です。
XMLファイルに書き込むことなく、このJavaクラスからfreemarkerデータモデルを取得する方法を知っている人はいますか?
次は私のコードです:
Javaからスキーママッピングされたクラス:
@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();
}
すでにXMLを持っていたので、あなたが出力HTMLまたはちょうど約何もXSLTを使用することができます。 – Viruzzo
私はXMLをまだ持っていません。私は、スキーマからJavaへの注釈で注釈が付けられたオブジェクトのリストを持っています。 – Marmoy
私はあなたがすでにその部分の世代コードを持っていることを意味しました。 – Viruzzo