最近使用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-3.3-all”显然包含了运行JFinal 3.3版本所需的全部依赖库,这对于快速搭建JFinal项目非常有帮助。 首先,我们要理解JFinal的核心概念。JFinal采用MVC(Model-View-Controller)架构模式,...
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的核心概念至关重要。JFinal是基于Java的MVC(Model-View-Controller)架构模式设计的,它提供了丰富的API和插件支持,使得开发者能够快速...
小demo 采用框架是轻量级的jfinal,上班空闲时间做的,主要是关于用fusioncharts V3.2.4 做的报表,数据来源是java代码拼凑json格式,jsp页面采用fusioncharts提供的setJSONUrl(url)的方法,项目部署在apache-tomcat...
包含的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进行项目开发时需要引入的一系列依赖库,这些库使得JFinal能够正常运行并提供其强大的功能。在这里,我们备份了这些必要的jar包,确保在开发过程中可以随时使用。 首先,核心的...
首先,我们关注的是“mysql表转jfinal model”。这个过程通常涉及到数据库设计的逆向工程,即从已有的数据库结构生成Java对象模型,也就是Model类。JFinal的Model是与数据库表进行交互的基础,它定义了表字段及其...
在这个压缩包文件中,包含的是一些JFinal项目运行所必需的基础jar包。这些jar包是JFinal能够正常工作的重要组成部分,它们提供了框架的核心功能和服务。 首先,我们要了解JFinal的核心特性。JFinal基于Java的...
JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。所需jar包包括jfinal-3.5-bin-with-src.jar和druid-1.0.9.jar
综上所述,"开源OA JFinal OA.zip"为中小企业提供了一套高效、易用的OA解决方案,结合了JFinal的后端开发优势和dwz的前端展示强项,是企业信息化建设的理想选择。开发者可以通过学习和实践,提升自己的Java Web开发...
JFinal 自身对第三方无依赖,但当需要第三方功能支持时则需要添加相应的 jar 文件 1:只有 jfinal-bin-xx.jar 文件是必需的。其它jar文件按需所用。 2:jetty-server-8.1.8.jar 用来支持无需额外安装 tomcat jetty ...
《JFinal自动生成类工具详解》 在Java开发过程中,数据模型类的创建是一项常见的任务,尤其是当数据库表数量较多时,手动编写每个表对应的实体类(Bean)将变得非常耗时。为了解决这个问题,开发者们通常会利用一些...
"jfinal excel 导出工具类"通常是一个静态工具类,封装了使用POI操作Excel的核心逻辑。这个工具类可能包含以下功能: 1. **初始化工作簿**:创建一个HSSFWorkbook(用于低版本的Excel)或XSSFWorkbook(用于高版本...
**标题:“JFinal”** **描述:** JFinal 是一个基于 Java 语言的轻量级 Web 开发框架,它以极简为目标,致力于打造“Java Web 开发最快最简单的框架”。JFinal 的设计理念是小巧、快速、易用,旨在简化开发流程,...
JFinal内置了多种渲染器,同时也支持自定义渲染器。 - **代码架构**:JFinal的代码组织结构清晰,采用模块化设计。主要的包结构包括Controller、Model、Plugin、Service等,分别对应不同的职责,方便开发者理解和...
**JFinal 框架与 ZTree 结合:后台数据获取及MySQL操作** ...开发者需要理解 JFinal 的 MVC 设计模式,掌握 SQL 查询和 JSON 格式化,以及熟悉 ZTree 的使用方法,这样才能有效地实现后台数据的读取和前端的动态展示。
1. **模型(Model)**:在 JFinal 中,模型通常继承自 `Model` 类或 `BaseModel` 类,用于与数据库进行交互。在 JFinalDemo 中,可能会有对应数据库表的实体类,如 `UserModel`,包含字段及相应的 getter 和 setter ...
自动配置使得开发者无需过多关注配置细节,只需在项目中引入所需模块的starter,Spring Boot就会自动配置好相关组件。起步依赖则通过“添加依赖即启动服务”的方式,简化了项目的构建过程。内嵌的Tomcat或Jetty...
对于Jfinal项目,开发者可以通过Jfinal提供的Db工具类进行数据库操作,如连接、执行SQL、事务处理等。 2. API:API文档或者接口定义是项目的重要组成部分,它详细描述了项目的对外服务,包括HTTP请求的URL、HTTP...
JFinal 提供了丰富的 Model 类和 Controller 类支持,使得数据库操作变得简单而直观。 1. **创建(Create)**: 在 JFinal 中,可以通过继承 `com.jfinal.core.Model` 创建 Model 类,然后定义字段并映射到数据库表...