Search in sources :

Example 1 with TemplateException

use of com.blade.exception.TemplateException in project blade by biezhi.

the class DefaultEngine method render.

@Override
public void render(ModelAndView modelAndView, Writer writer) throws TemplateException {
    String view = modelAndView.getView();
    String body;
    String viewPath;
    if (Const.CLASSPATH.endsWith(PATH_SEPARATOR)) {
        viewPath = Const.CLASSPATH + TEMPLATE_PATH + PATH_SEPARATOR + view;
    } else {
        viewPath = Const.CLASSPATH + PATH_SEPARATOR + TEMPLATE_PATH + PATH_SEPARATOR + view;
    }
    try {
        if (view.startsWith("jar:")) {
            String jarPath = view.substring(4);
            InputStream input = DefaultEngine.class.getResourceAsStream(jarPath);
            BufferedReader reader = new BufferedReader(new InputStreamReader(input));
            body = IOKit.readToString(reader);
        } else {
            if (BladeKit.runtimeIsJAR()) {
                viewPath = PATH_SEPARATOR + TEMPLATE_PATH + PATH_SEPARATOR + view;
                InputStream in = getClass().getResourceAsStream(viewPath);
                BufferedReader reader = new BufferedReader(new InputStreamReader(in));
                body = IOKit.readToString(reader);
            } else {
                body = IOKit.readToString(viewPath);
            }
        }
        Request request = WebContext.request();
        Map<String, Object> attributes = new HashMap<>();
        Map<String, Object> reqAttrs = request.attributes();
        attributes.putAll(reqAttrs);
        attributes.putAll(modelAndView.getModel());
        Session session = request.session();
        if (null != session) {
            attributes.putAll(session.attributes());
        }
        String result = BladeTemplate.template(body, attributes).fmt();
        writer.write(result);
    } catch (Exception e) {
        log.warn("View path is: {}", viewPath);
        throw new TemplateException(e);
    } finally {
        IOKit.closeQuietly(writer);
    }
}
Also used : HashMap(java.util.HashMap) TemplateException(com.blade.exception.TemplateException) Request(com.blade.mvc.http.Request) TemplateException(com.blade.exception.TemplateException) Session(com.blade.mvc.http.Session)

Aggregations

TemplateException (com.blade.exception.TemplateException)1 Request (com.blade.mvc.http.Request)1 Session (com.blade.mvc.http.Session)1 HashMap (java.util.HashMap)1