`

(转) jfinal渲染dwz所需格式的json类封装

 
阅读更多

最近使用jfinal框架和dwz前端框架做一个后台管理的系统。

首先,不得不说jfinal和dwz都是很优秀的框架,在实际的开发中提供了不少的便利,向作者们致敬,以后会更深入框架代码进行学习!

这两个框架上手着实很快,看了demo和教程文档基本就可以开始进行开发。然而,水平有限,前期写了不少不合理的代码,几天在做后期的一些调整。例如如下的json数据渲染的问题...

dwz Ajax表单提交后服务器端需要返回以下的json代码:

{
     "statusCode":"200",
     "message":"操作成功",  
     "navTabId":"",
     "rel":"",
     "callbackType":"closeCurrent",
     "forwardUrl":""
}

 

开始时,在controller的方法中,直接使用renderJson(String jsonText)将json直接以字符串的形式写入,所以每一处需要渲染json的地方代码如下般冗长不堪:

renderJson("{\"statusCode\":\"200\",\"message\":\"保存成功!\",\"navTabId\":\"navTabId\",\"rel\":\"\",\"callbackType\":\"closeCurrent\",\"forwardUrl\":\"\",\"confirmMsg\":\"\"}");

 

实际上,将这一部分进行封装,便可以“一劳永逸”,代码也会相对简洁好看些。

手写一个类继承Render类,根据实际情况写入数据域和方法,如下:

package com.car.admin.util;

import java.io.IOException;
import java.io.PrintWriter;
import java.text.MessageFormat;

import com.jfinal.render.Render;
import com.jfinal.render.RenderException;

@SuppressWarnings("serial")
public class DwzRenderJson extends Render {
	private String statusCode = "200";
	private String message = "";
	private String navTabId = "";
	private String callbackType = "";
	private String forwardUrl = "";
	private String rel="";
	private String confirmMsg="";

	public DwzRenderJson(String message, String navTabId, String callbackType) {
		this.message = message;
		this.navTabId = navTabId;
		this.callbackType = callbackType;
		
	}

	public DwzRenderJson() {
		
	}

	public static DwzRenderJson success() {
		DwzRenderJson dwzRenderJson = new DwzRenderJson();
		dwzRenderJson.setMessage("操作成功");
		return dwzRenderJson;
	}

	public static DwzRenderJson success(String successMsg) {
		DwzRenderJson dwzRenderJson = new DwzRenderJson();
		dwzRenderJson.setMessage(successMsg);
		return dwzRenderJson;
	}
	
	public static DwzRenderJson success(String successMsg,String navTabId) {
		DwzRenderJson dwzRenderJson = new DwzRenderJson();
		dwzRenderJson.setMessage(successMsg);
		dwzRenderJson.setNavTabId(navTabId);
		return dwzRenderJson;
	}

	public static DwzRenderJson error() {
		DwzRenderJson dwzRenderJson = new DwzRenderJson();
		dwzRenderJson.statusCode = "300";
		dwzRenderJson.message = "操作失败";
		return dwzRenderJson;
	}

	public static DwzRenderJson error(String errorMsg) {
		DwzRenderJson dwzRenderJson = new DwzRenderJson();
		dwzRenderJson.statusCode = "300";
		dwzRenderJson.message = errorMsg;
		return dwzRenderJson;
	}


	public static Render refresh(String refreshNavTabId) {
		DwzRenderJson dwzRenderJson = new DwzRenderJson();
		dwzRenderJson.navTabId = refreshNavTabId;
		return dwzRenderJson;
	}

	public static DwzRenderJson closeCurrentAndRefresh(String refreshNavTabId) {
		DwzRenderJson dwzRenderJson = new DwzRenderJson();
		dwzRenderJson.navTabId = refreshNavTabId;
		dwzRenderJson.callbackType = "closeCurrent";
		return dwzRenderJson;
	}
	public static DwzRenderJson closeCurrentAndFoward(String refreshNavTabId, String fowardUrl) {
		DwzRenderJson dwzRenderJson = new DwzRenderJson();
		dwzRenderJson.navTabId = refreshNavTabId;
		dwzRenderJson.callbackType = "closeCurrent";
		dwzRenderJson.forwardUrl = fowardUrl;
		return dwzRenderJson;
	}
	
	public static DwzRenderJson closeCurrentAndRefresh(String refreshNavTabId, String message) {
		DwzRenderJson dwzRenderJson = new DwzRenderJson();
		dwzRenderJson.navTabId = refreshNavTabId;
		dwzRenderJson.message = message;
		dwzRenderJson.callbackType = "closeCurrent";
		return dwzRenderJson;
	}

	@Override
	public void render() {
		PrintWriter writer = null;
		String dwz = "\"statusCode\":\"{0}\",\"message\":\"{1}\",\"navTabId\":\"{2}\",\"rel\":\"{3}\",\"callbackType\":\"{4}\",\"forwardUrl\":\"{5}\",\"confirmMsg\":\"{6}\"";
		dwz = "{\n" + MessageFormat.format(dwz, statusCode, message, navTabId, rel, callbackType, forwardUrl , confirmMsg) + "\n}";
		System.out.println(dwz);
		try {
			System.out.println(dwz);
			response.setHeader("Pragma", "no-cache");	// HTTP/1.0 caches might not implement Cache-Control and might only implement Pragma: no-cache
	        response.setHeader("Cache-Control", "no-cache");
	        response.setDateHeader("Expires", 0);
			response.setContentType("text/html;charset=" + getEncoding());
			//response.setCharacterEncoding(super.getEncoding());
			writer = response.getWriter();
			writer.write(dwz);
			writer.flush();
		} catch (IOException e) {
			throw new RenderException(e);
		} finally {
			writer.close();
		}
	}

	public String getStatusCode() {
		return statusCode;
	}

	public void setStatusCode(String statusCode) {
		this.statusCode = statusCode;
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}

	public String getNavTabId() {
		return navTabId;
	}

	public void setNavTabId(String navTabId) {
		this.navTabId = navTabId;
	}

	public String getCallbackType() {
		return callbackType;
	}

	public void setCallbackType(String callbackType) {
		this.callbackType = callbackType;
	}

	public String getForwardUrl() {
		return forwardUrl;
	}

	public void setForwardUrl(String forwardUrl) {
		this.forwardUrl = forwardUrl;
	}

	public String getRel() {
		return rel;
	}

	public void setRel(String rel) {
		this.rel = rel;
	}

	public String getConfirmMsg() {
		return confirmMsg;
	}

	public void setConfirmMsg(String confirmMsg) {
		this.confirmMsg = confirmMsg;
	}

}

原地址:http://www.fanli7.net/a/bianchengyuyan/JS/2014/0323/440142.html
分享到:
评论

相关推荐

    jfinal运行所需jar包

    jfinal运行所需的jar包,整理的很全,在这里分享一下,请支持一下

    JFinal 项目所需的所有实用jar包

    cos.jar(图片上传所需) ehcache-core-2.5.2.jar(缓存处理) javax.servlet.jsp.jstl-1.2.0.v201105211821.jar(JSTL标签库) JFinal-bin-with-src-1.5.jar(JFinal 核心包) log4j-1.2.16.jar(日志记录) mysql-...

    jfinal (fusioncharts 3.2.4) json 格式报表(有后台代码)

    小demo 采用框架是轻量级的jfinal,上班空闲时间做的,主要是关于用fusioncharts V3.2.4 做的报表,数据来源是java代码拼凑json格式,jsp页面采用fusioncharts提供的setJSONUrl(url)的方法,项目部署在apache-tomcat...

    jfinal所需jar

    jfinal是一个零配置的orm框架,所以在使用的时候我们要导入所需jar包,这里备份一下。

    JFinal框架搭建简介和所需jar包

    此资源包含JFinal框架搭建的一些简介和所需要的jar包,可直接下载导入使用。

    jfinal开发所需jar包

    JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。所需jar包包括jfinal-3.5-bin-with-src.jar和druid-1.0.9.jar

    基于JFinal+Shiro+DWZ,数据库采用MySQL的一个简单仓库管理系统

    一个简单仓库管理系统,使用开源技术JFinal+Shiro+DWZ,数据库采用MySQL,本项目处于开发期可作为学习JFinal/DWZ和Shiro的参考。 Apache2.0开源协议,友好商业开源

    JFinal项目所需的基本jar包

    Jfinal所需的基本jar,已经打包好了

    dwz 简易知识库

    基于JFinal shiro dwz mysql 开发 文件上传:uploadify 富文本:xheditor

    JFinal所需的Jar

    JFinal 自身对第三方无依赖,但当需要第三方功能支持时则需要添加相应的 jar 文件 1:只有 jfinal-bin-xx.jar 文件是必需的。其它jar文件按需所用。 2:jetty-server-8.1.8.jar 用来支持无需额外安装 tomcat jetty ...

    开源OA JFinal OA.zip

    开源OA JFinal OA ,基于JFinal dwzOA使用开源框架:JFinal 和dwz开发的基于中小企业的OA系统,目前暂...

    mysql表转jfinal model

    从mysql数据表映射到jfinal model,支持自动生成序列化标识符和生成swagger model(用于制作在线api接口)

    jfinal所需的jar包

    包含的jar包: c3p0-0.9.1.2.jar druid-1.0.5.jar freemarker-2.3.20.jar log4j-1.2.16 ...jackson-annotations-2.4.0.jar jackson-databind-2.4.2.jar ...jfinal-1.9-bin.jar jetty-server-8.1.8.jar cos-26Dec2008.jar

    jfinal文档

    jfinal文档3.3 pdf格式文档jfinal文档3.3 pdf格式文档jfinal文档3.3 pdf格式文档jfinal文档3.3 pdf格式文档

    jfinal 完整Demo

    jfinal框架的基础搭建 里面包含搭建jfinal框架的所需资料 可运行

    jfinal工具类

    SAAS架构 一步步给你详细讲解分解saas架构,已SSH 框架为例子,如何转到SAAS的步骤,多租户,灵活配置,做数据库的如何定位,缓存cache的应用。 非常有用值得推荐...我现在java的一值做参考

    jfinal-weixin jfinal

    jfinal-weixin jfinal 微信支付快发开发jar包

    jfinal excel 导出工具类

    jfinal excel公用工具类 ,简单几行代码即可导出excel 支持复合表头,复杂表头

    jfinal全集

    jfinal

    JFinal自动生成model类的工具包

    JFinal自动生成model类的工具包,以前的版本忘记加so文件

Global site tag (gtag.js) - Google Analytics