Package org.expressme.webwind.template

Source Code of org.expressme.webwind.template.VelocityTemplate

package org.expressme.webwind.template;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.velocity.VelocityContext;
import org.apache.velocity.context.Context;
import org.apache.velocity.io.VelocityWriter;

/**
* Template using Velocity.
*
* @author Michael Liao (askxuefeng@gmail.com)
*/
public class VelocityTemplate implements Template {

    private org.apache.velocity.Template template;
    private String contentType;
    private String encoding;

    public VelocityTemplate(org.apache.velocity.Template template, String contentType, String encoding) {
        this.template = template;
        this.contentType = contentType;
        this.encoding = encoding;
    }

    public void render(HttpServletRequest request, HttpServletResponse response, Map<String, Object> model) throws Exception {
        StringBuilder sb = new StringBuilder(64);
        sb.append(contentType==null ? "text/html" : contentType)
                .append(";charset=")
                .append(encoding==null ? "UTF-8" : encoding);
        response.setContentType(sb.toString());
        response.setCharacterEncoding(encoding==null ? "UTF-8" : encoding);
        // init context:
        Context context = new VelocityContext(model);
        afterContextPrepared(context);
        // render:
        VelocityWriter vw = new VelocityWriter(response.getWriter());
        try {
            template.merge(context, vw);
            vw.flush();
        }
        finally {
            vw.recycle(null);
        }
    }

    /**
     * Let subclass do some initial work after Velocity context prepared.
     *
     * @param context Velocity context object.
     */
    protected void afterContextPrepared(Context context) {
    }
}
TOP

Related Classes of org.expressme.webwind.template.VelocityTemplate

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.