web-dev-qa-db-ja.com

FreeMarkerの入力として文字列を渡す方法は?

すべてのテンプレートはデータベースに保存されます。そして、データベースからテンプレートのコンテンツをフェッチし、freemarkerでマークアップする必要があります。最終出力はテキストボックスにレンダリングされます。

しかし、ファイル名の代わりに文字列を送信できる方法が見つかりません。

提案してください。

19
Shashi

StringReader を使用して、テンプレートを Template コンストラクターに渡すことができます。

  // Get your template as a String from the DB
  String template = getTemplateFromDatabase();
  Map<String, Object> model = getModel();

  Configuration cfg = new Configuration();
  cfg.setObjectWrapper(new DefaultObjectWrapper());

  Template t = new Template("templateName", new StringReader(template), cfg);

  Writer out = new StringWriter();
  t.process(model, out);

  String transformedTemplate = out.toString();
37
obourgain