Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   *
   * Copyright (c) 2013-2014 sagyf Yang. The Four Group.
   */
  
  package com.github.sog.controller;
  
 
 import java.util.Map;

基本控制器.

Author(s):
walter yang
Version:
1.0 2013-12-12 14:23
Since:
JDK 1.5
 
 public abstract class BasicController extends Controller {
 
     protected static boolean flashflag = false;

    
Send a 304 Not Modified response
 
     protected static void notModified() {
         new NotModified().render();
     }

    
Send a 400 Bad request
 
     protected static void badRequest() {
         new BadRequest().render();
     }
 
     protected static void renderExcel(String templateFileMap<StringObjectdatas) {
         JxlsRender.me(templateFile).beans(datas).render();
     }
 
     @Override
     public void render(String view) {
         if (view.startsWith(.) && .) {
             super.render(JFinalApp.viewPath + view);
         } else {
             super.render(view);
         }
     }

    
在jfinal基础上增加渲染XML格式的数据.

Parameters:
view 视图,这里是基于freemarker的,所以必须为freemarker模板
 
     protected void renderXml(String view) {
         render(new FreeMarkerXMLRender(view));
     }

    
渲染错误提示信息,以Json格式。

Parameters:
error 错误信息
 
     protected void renderError(String error) {
         renderJson(AjaxMessage.error(error));
     }
 
     protected void renderFailure(String failure) {
         renderJson(AjaxMessage.failure(failure));
     }

    
渲染成功提示信息,以JSON格式

Parameters:
message 提示信息
 
     protected void renderSuccess(String message) {
         renderJson(AjaxMessage.ok(message));
     }
 
     protected void renderSuccess() {
         renderJson(AjaxMessage.ok());
    }

    
渲染错误提示信息,以Json格式。

Parameters:
error 错误信息
e 异常
    protected void renderError(String errorException e) {
        renderJson(AjaxMessage.error(errore));
    }

    
渲染视图为字符串

Parameters:
view 视图模版
Returns:
视图渲染后的字符串
    protected String renderTpl(String view) {
        final Enumeration<Stringattrs = getAttrNames();
        final Map<StringObjectroot = Maps.newHashMap();
        while (attrs.hasMoreElements()) {
            String attrName = attrs.nextElement();
            root.put(attrNamegetAttr(attrName));
        }
        return FreemarkerKit.processString(viewroot);
    }

    
渲染todo提示
    protected void todo() {
        renderJson(AjaxMessage.developing());
    }

    
从Request中获取参数并封装为对象进行处理

Returns:
jquery DataTables参数信息
    protected DatatablesCriterias getCriterias() {
        return DatatablesCriterias.criteriasWithRequest(getRequest());
    }
    protected <E> void renderDataTables(Page<E> datasDatatablesCriterias criterias) {
        Preconditions.checkNotNull(criterias"datatable criterias is must be not null.");
        DataSet<E> dataSet = DataSet.newSet(datas.getList(), datas.getTotalRow(), datas.getTotalRow());
        DatatablesResponse<E> response = DatatablesResponse.build(dataSetcriterias);
        renderJson(response);
    }

    
根据当前路径构造将要跳转的路径的完整Action

Parameters:
currentActionPath 当前路径,类似 /sau/index
url 下一个路径,类似/au/login, detail?,admin/detail.
Returns:
下一个Action的完整路径()
    public String parsePath(String currentActionPathString url) {
        if (url.startsWith("/")) {//完整路径
            return url.split("\\?")[0];
        } else if (!url.contains("/")) {//类似于detail的路径。
            return "/" + currentActionPath.split("/")[1] + "/" + url.split("\\?")[0];
        } else if (url.contains("http:") || url.contains("https:")) {
            return null;
        }
        ///abc/def","bcd/efg?abc
        return currentActionPath + "/" + url.split("\\?")[0];
    }

    
设定Flash,该flash中的所有信息将会出现在下一个请求中。 该操作一般用在forwardAction 及redirect操作前。 在设定Falsh拦截器后,拦截器会自动注入所有当前Action中设定的Flash信息到request中。 且仅注入一次。

Parameters:
key
value
    public void setFlash(String keyObject value) {
        String actionPath = getRequest().getRequestURI();
        JFinalApp.flashManager().setFlash(this.getSession(false), actionPathkeyvalue);
         = true;
    }
    @Override
    public void forwardAction(String actionUrl) {
        if () {//若有新加入的Flash。更换key。
            String actionPath = getRequest().getRequestURI();
            //将以当前actionPath为key更替为下一个请求actionPath作为key
            JFinalApp.flashManager().updateFlashKey(this.getSession(false), actionPathactionUrl);
             = false;
        }
        super.forwardAction(actionUrl);
    }
    @Override
    public void redirect(String url) {
        if () {
            String actionPath = getRequest().getRequestURI();
            String newActionPath = parsePath(actionPathurl);
            JFinalApp.flashManager().updateFlashKey(this.getSession(false), actionPathnewActionPath);
             = false;
        }
        super.redirect(url);
    }
    @Override
    public void redirect(String urlboolean withQueryString) {
        if () {
            String actionPath = this.getRequest().getRequestURI();
            String newActionPath = parsePath(actionPathurl);
            JFinalApp.flashManager().updateFlashKey(this.getSession(false), actionPathnewActionPath);
             = false;
        }
        super.redirect(urlwithQueryString);
    }
New to GrepCode? Check out our FAQ X