Velocityサンプルコード
いまさらだけど、Velocityを使うときのサンプルを載せてみる。
ライブラリは詳しく書かないけど、必要なので注意すること。
VelocitySample.java
import java.io.StringWriter; import java.util.Map; import java.util.Properties; import org.apache.velocity.Template; import org.apache.velocity.VelocityContext; import org.apache.velocity.app.Velocity; import org.apache.velocity.exception.ParseErrorException; import org.apache.velocity.exception.ResourceNotFoundException; public class VelocitySample { private static final String MAIL_BODY_ENCODING = "MS932"; private static final String TEMPLATE_PATH = "/tmp"; static { Properties p = new Properties(); p.setProperty("input.encoding", MAIL_BODY_ENCODING); p.setProperty("file.resource.loader.path", TEMPLATE_PATH); try { Velocity.init(p); } catch (Exception e) { //エラー処理は適宜追加 } } public String getContent(MapparamMap) throws ResourceNotFoundException, ParseErrorException, Exception { if(paramMap == null) return null; VelocityContext vc = new VelocityContext(); vc.put("host", paramMap.get("host")); vc.put("contextPath", paramMap.get("contextPath")); StringWriter sw = new StringWriter(); Template template = Velocity.getTemplate("test.vm"); template.merge(vc, sw); sw.flush(); return sw.toString(); } }
test.vm
ここにテンプレートの内容を書きます。 http://$host$contextPath テンプレート内での改行は有効です。
テンプレートのパスであるfile.resource.loader.pathを指定するのがポイントだよ。
ファイルは存在するのにResourceNotFoundExceptionが発生する場合は、これが原因。