All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.dreampie.common.web.render.JsonErrorRender Maven / Gradle / Ivy

There is a newer version: 1.2.2
Show newest version
package cn.dreampie.common.web.render;

import cn.dreampie.common.util.ValidateUtils;
import com.jfinal.render.Render;
import com.jfinal.render.RenderException;

import java.io.IOException;
import java.io.PrintWriter;

/**
 * Created by wangrenhui on 14-4-28.
 */
public class JsonErrorRender extends Render {

  private static final long serialVersionUID = -7175292712918557096L;
  private static final String contentType = "application/json;charset=" + getEncoding();
  private static final String contentTypeForIE = "text/html;charset=" + getEncoding();

  protected static final String json404 = "404 Not Found";
  protected static final String json500 = "500 Internal Server Error";

  protected static final String json401 = "401 Unauthorized";
  protected static final String json403 = "403 Forbidden";

  protected int errorCode;
  private boolean forIE = false;

  public JsonErrorRender(int errorCode, String view) {
    this.errorCode = errorCode;
    this.view = view;
  }

  public void render() {
    String header = request.getHeader("USER-AGENT").toLowerCase();
    forIE = header.indexOf("msie") > 0 ? true : false;

    response.setStatus(getErrorCode());  // HttpServletResponse.SC_XXX_XXX

    // render with json
    String errorJson = null;
    Object error = request.getAttribute("errorJson");
    if (ValidateUtils.me().isNullOrEmpty(error)) {
      errorJson = getErrorJson();
    } else {
      errorJson = error.toString();
    }

    // render with html content
    PrintWriter writer = null;
    try {
      response.setContentType(forIE ? contentTypeForIE : contentType);
      writer = response.getWriter();
      writer.write(errorJson);
      writer.flush();
    } catch (IOException e) {
      throw new RenderException(e);
    } finally {
      if (writer != null)
        writer.close();
    }
  }

  public String getErrorJson() {
    int errorCode = getErrorCode();
    if (errorCode == 404)
      return json404;
    if (errorCode == 500)
      return json500;
    if (errorCode == 401)
      return json401;
    if (errorCode == 403)
      return json403;
    return errorCode + " Error";
  }

  public int getErrorCode() {
    return errorCode;
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy