com.nkapps.billing.configs.LayoutInterceptor.java Source code

Java tutorial

Introduction

Here is the source code for com.nkapps.billing.configs.LayoutInterceptor.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.nkapps.billing.configs;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

/**
 *
 * @author nuraddin
 */
public class LayoutInterceptor extends HandlerInterceptorAdapter {

    public static final String WITHOUT_LAYOUT = "<without_layout>";
    private static final String DEFAULT_LAYOUT = "layout/default";
    private static final String DEFAULT_VIEW_ATTRIBUTE_NAME = "view";

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
            ModelAndView modelAndView) throws Exception {
        if (modelAndView == null || !modelAndView.hasView()) {
            return;
        }
        String originalViewName = modelAndView.getViewName();
        if (isRedirectOrForward(originalViewName)) {
            return;
        }
        if (originalViewName.endsWith(WITHOUT_LAYOUT)) {
            modelAndView.setViewName(originalViewName.replace(WITHOUT_LAYOUT, ""));
            return;
        }
        modelAndView.setViewName(DEFAULT_LAYOUT);
        modelAndView.addObject(DEFAULT_VIEW_ATTRIBUTE_NAME, originalViewName);
    }

    private boolean isRedirectOrForward(String viewName) {
        return viewName.startsWith("redirect:") || viewName.startsWith("forward:");
    }
}