Example usage for org.springframework.web.servlet.view AbstractUrlBasedView addStaticAttribute

List of usage examples for org.springframework.web.servlet.view AbstractUrlBasedView addStaticAttribute

Introduction

In this page you can find the example usage for org.springframework.web.servlet.view AbstractUrlBasedView addStaticAttribute.

Prototype

public void addStaticAttribute(String name, Object value) 

Source Link

Document

Add static data to this view, exposed in each view.

Usage

From source file:org.nextframework.controller.CompositeViewResolver.java

@Override
protected View loadView(String viewName, Locale locale) throws Exception {
    boolean direct = false;
    if (viewName.startsWith("direct:")) {
        direct = true;/*w  w  w  . j  a  v  a  2 s . c o m*/
        viewName = viewName.substring("direct:".length());
    }

    String classpathView = null;

    if (viewName.startsWith("classpath:")) {
        viewName = viewName.substring("classpath:".length());

        String path = viewName.substring(0, viewName.lastIndexOf('.'));

        URL resource = getServletContext()
                .getResource("/WEB-INF/classes/" + viewName.replace('.', '/') + ".jsp");
        if (resource == null) {
            InputStream in = getClass().getClassLoader()
                    .getResourceAsStream(viewName.replace('.', '/') + ".jsp");
            if (in == null) {
                throw new RuntimeException("view not found " + viewName);
            }
            File dir = new File(getServletContext().getRealPath("/WEB-INF/classes/" + path.replace('.', '/')));
            dir.mkdirs();
            BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(getServletContext()
                    .getRealPath("/WEB-INF/classes/" + viewName.replace('.', '/') + ".jsp")));
            int data;
            while (((data = in.read()) >= 0)) {
                out.write(data);
            }
            out.flush();
        }
        classpathView = "/WEB-INF/classes/" + viewName.replace('.', '/') + ".jsp";
    }

    AbstractUrlBasedView view = (AbstractUrlBasedView) super.loadView(viewName, locale);

    if (direct) {
        return view;
    }

    if (classpathView != null) {
        view.setUrl(classpathView);
    }

    if (useBase == null) {
        String[] bases = baseView.split(",");
        for (String base : bases) {
            if (getServletContext().getResourceAsStream(base) == null) {
                useBase = false;
            } else {
                useBase = true;
                baseView = base;
                break;
            }
        }
    }
    if (!useBase) {
        return super.loadView(viewName, locale);
    }

    if (baseView == null) {
        throw new RuntimeException(
                CompositeViewResolver.class.getName() + ": property baseView no pode ser null");
    }

    if (parameterName == null) {
        throw new RuntimeException(
                CompositeViewResolver.class.getName() + ": property parameterName no pode ser null");
    }

    //url q seria usada
    String previousURL = view.getUrl();
    view.addStaticAttribute(parameterName, previousURL);
    //log.info(baseView+" > "+parameterName+" = "+previousURL);
    if (getServletContext().getResourceAsStream(previousURL) == null) {
        log.warn("Pgina no existente: " + previousURL);
    }
    view.setUrl(baseView);

    return view;
}