`

(转) 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-3.3-all”显然包含了运行JFinal 3.3版本所需的全部依赖库,这对于快速搭建JFinal项目非常有帮助。 首先,我们要理解JFinal的核心概念。JFinal采用MVC(Model-View-Controller)架构模式,...

    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框架搭建简介和所需jar包

    本文将深入介绍JFinal框架的搭建过程及其所需的jar包。 首先,理解JFinal的核心概念至关重要。JFinal是基于Java的MVC(Model-View-Controller)架构模式设计的,它提供了丰富的API和插件支持,使得开发者能够快速...

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

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

    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所需jar

    "jfinal所需jar"指的是在使用JFinal进行项目开发时需要引入的一系列依赖库,这些库使得JFinal能够正常运行并提供其强大的功能。在这里,我们备份了这些必要的jar包,确保在开发过程中可以随时使用。 首先,核心的...

    mysql表转jfinal model

    首先,我们关注的是“mysql表转jfinal model”。这个过程通常涉及到数据库设计的逆向工程,即从已有的数据库结构生成Java对象模型,也就是Model类。JFinal的Model是与数据库表进行交互的基础,它定义了表字段及其...

    JFinal项目所需的基本jar包

    在这个压缩包文件中,包含的是一些JFinal项目运行所必需的基础jar包。这些jar包是JFinal能够正常工作的重要组成部分,它们提供了框架的核心功能和服务。 首先,我们要了解JFinal的核心特性。JFinal基于Java的...

    jfinal开发所需jar包

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

    开源OA JFinal OA.zip

    综上所述,"开源OA JFinal OA.zip"为中小企业提供了一套高效、易用的OA解决方案,结合了JFinal的后端开发优势和dwz的前端展示强项,是企业信息化建设的理想选择。开发者可以通过学习和实践,提升自己的Java Web开发...

    JFinal所需的Jar

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

    jfinal自动生成类工具

    《JFinal自动生成类工具详解》 在Java开发过程中,数据模型类的创建是一项常见的任务,尤其是当数据库表数量较多时,手动编写每个表对应的实体类(Bean)将变得非常耗时。为了解决这个问题,开发者们通常会利用一些...

    jfinal excel 导出工具类

    "jfinal excel 导出工具类"通常是一个静态工具类,封装了使用POI操作Excel的核心逻辑。这个工具类可能包含以下功能: 1. **初始化工作簿**:创建一个HSSFWorkbook(用于低版本的Excel)或XSSFWorkbook(用于高版本...

    JFinal

    **标题:“JFinal”** **描述:** JFinal 是一个基于 Java 语言的轻量级 Web 开发框架,它以极简为目标,致力于打造“Java Web 开发最快最简单的框架”。JFinal 的设计理念是小巧、快速、易用,旨在简化开发流程,...

    JFinal技术架构浅析.doc

    JFinal内置了多种渲染器,同时也支持自定义渲染器。 - **代码架构**:JFinal的代码组织结构清晰,采用模块化设计。主要的包结构包括Controller、Model、Plugin、Service等,分别对应不同的职责,方便开发者理解和...

    jfinal ztree后台读取MySQL数据

    **JFinal 框架与 ZTree 结合:后台数据获取及MySQL操作** ...开发者需要理解 JFinal 的 MVC 设计模式,掌握 SQL 查询和 JSON 格式化,以及熟悉 ZTree 的使用方法,这样才能有效地实现后台数据的读取和前端的动态展示。

    JFinalDemo.zip

    1. **模型(Model)**:在 JFinal 中,模型通常继承自 `Model` 类或 `BaseModel` 类,用于与数据库进行交互。在 JFinalDemo 中,可能会有对应数据库表的实体类,如 `UserModel`,包含字段及相应的 getter 和 setter ...

    springboot和JFinal的集成

    自动配置使得开发者无需过多关注配置细节,只需在项目中引入所需模块的starter,Spring Boot就会自动配置好相关组件。起步依赖则通过“添加依赖即启动服务”的方式,简化了项目的构建过程。内嵌的Tomcat或Jetty...

    JfinalDemo

    对于Jfinal项目,开发者可以通过Jfinal提供的Db工具类进行数据库操作,如连接、执行SQL、事务处理等。 2. API:API文档或者接口定义是项目的重要组成部分,它详细描述了项目的对外服务,包括HTTP请求的URL、HTTP...

    jfinal_demo_for_maven.zip_DEMO_JFinal crud_JFinal 项目_jfinal_jfin

    JFinal 提供了丰富的 Model 类和 Controller 类支持,使得数据库操作变得简单而直观。 1. **创建(Create)**: 在 JFinal 中,可以通过继承 `com.jfinal.core.Model` 创建 Model 类,然后定义字段并映射到数据库表...

Global site tag (gtag.js) - Google Analytics