博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jfinal渲染dwz所需格式的json类封装
阅读量:6999 次
发布时间:2019-06-27

本文共 5344 字,大约阅读时间需要 17 分钟。

hot3.png

最近使用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;	}}

原来渲染json部分的代码便为如下:

render(DwzRenderJson.closeCurrentAndRefresh("storelist", "保存成功!"));

确实简短了不少,也达到了想要的效果。

215512_WGXD_1438721.png

水平实在有限,接触实际开发也不久,经验十分有限,难免要走一些弯路,但是,重要的还是要勤于思考动手、多多请教学习。

转载于:https://my.oschina.net/u/1438721/blog/210802

你可能感兴趣的文章
数领科技|solidworks教程:solidworks快捷键汇总
查看>>
ansible自动部署 zabbix-agent 的模块
查看>>
MYSQL 分组
查看>>
Python新版本手动安装
查看>>
postgresql 9.6 安装并配置远程连接
查看>>
PC电源选购常见误区解惑
查看>>
使用LVS或者阿里云的SLB后如何获取访客真实的IP地址
查看>>
zookeeper安装部署--分布式模式
查看>>
Linux下架设×××(pptp)服务器
查看>>
35岁以前成功的12条黄金法则
查看>>
Spring2.5学习笔记2-AOP-利用注解
查看>>
Android 动画之TranslateAnimation应用详解
查看>>
linux 命令之 --用户管理
查看>>
二叉树基本操作实现
查看>>
怎么处理警告:编码 GBK 的不可映射字符
查看>>
Exchange Server 2010下,检测用户密码到期通知提醒脚本
查看>>
java基础--java静态代码块和静态方法的区别、static用法
查看>>
zabbix邮箱告警的详细配置
查看>>
使用基本ACL规则限制用户登录
查看>>
linux 文件查看命令 文件和目录属性
查看>>