最近使用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包,整理的很全,在这里分享一下,请支持一下
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-...
小demo 采用框架是轻量级的jfinal,上班空闲时间做的,主要是关于用fusioncharts V3.2.4 做的报表,数据来源是java代码拼凑json格式,jsp页面采用fusioncharts提供的setJSONUrl(url)的方法,项目部署在apache-tomcat...
jfinal是一个零配置的orm框架,所以在使用的时候我们要导入所需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/DWZ和Shiro的参考。 Apache2.0开源协议,友好商业开源
Jfinal所需的基本jar,已经打包好了
基于JFinal shiro dwz mysql 开发 文件上传:uploadify 富文本:xheditor
JFinal 自身对第三方无依赖,但当需要第三方功能支持时则需要添加相应的 jar 文件 1:只有 jfinal-bin-xx.jar 文件是必需的。其它jar文件按需所用。 2:jetty-server-8.1.8.jar 用来支持无需额外安装 tomcat jetty ...
开源OA JFinal OA ,基于JFinal dwzOA使用开源框架:JFinal 和dwz开发的基于中小企业的OA系统,目前暂...
从mysql数据表映射到jfinal model,支持自动生成序列化标识符和生成swagger model(用于制作在线api接口)
包含的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文档3.3 pdf格式文档jfinal文档3.3 pdf格式文档jfinal文档3.3 pdf格式文档jfinal文档3.3 pdf格式文档
jfinal框架的基础搭建 里面包含搭建jfinal框架的所需资料 可运行
SAAS架构 一步步给你详细讲解分解saas架构,已SSH 框架为例子,如何转到SAAS的步骤,多租户,灵活配置,做数据库的如何定位,缓存cache的应用。 非常有用值得推荐...我现在java的一值做参考
jfinal-weixin jfinal 微信支付快发开发jar包
jfinal excel公用工具类 ,简单几行代码即可导出excel 支持复合表头,复杂表头
jfinal
JFinal自动生成model类的工具包,以前的版本忘记加so文件