开发中可能返回各种各样的值, 如果我们以json格式作为返回值的格式时, 将返回值统一后便于开发。
1. 统一一个返回值为Result, Result继承hashMap
2. Result装填三个值, err_no:错误号, 0表示调用成功,前台可根据该值做处理; err_info:错误信息, 提示给用户,让用户知道操作结果; data:返回的数据
3. err_no、err_info、data可以看做是Result的三个属性, 不应该在方法中通过put操作设置值。 应该为其提供set方法。
package com.changez.sm.base.result;
import java.util.HashMap;
import java.util.Map;
/**
* @desc: 当且仅当err_no为0, 表示数据调用成功;
* @auth: zona
* 2017年2月18日 下午1:55:35
*/
public class Result extends HashMap{
private int err_no;
private String err_info;
public Result () { }
/**
* 设置错误号,错误信息
* @param err_no
* @param err_info
*/
public Result(int err_no, String err_info) {
put("err_no", err_no);
put("err_info", err_info);
}
/**
*
* @desc: 设置错误号, controller调用成功时可以使用该方式。 等同于setErroNo方法
* @auth: zona
* 2017年2月19日 下午1:33:26
*/
public void success() {
put("err_no", 0);
}
/**
*
* @desc: 设置错误号
* @auth: zona
* 2017年2月19日 下午1:33:10
* @param err_no
*/
public void setErrNo(int err_no) {
put("err_no", err_no);
}
/**
*
* @desc: 设置错误信息
* @auth: zona
* 2017年2月19日 下午1:32:58
* @param err_info
*/
public void setErrInfo(String err_info) {
put("err_info", err_info);
}
/**
*
* @desc: 设置数据
* @auth: zona
* 2017年2月19日 下午1:32:33
* @param data
*/
public void setData(Map data) {
put("data", data);
}
//---> 调用方式
public static void main(String[] args) {
test();
}
/**
*
* @desc: 调用方式
* @auth: zona
* 2017年2月19日 下午1:52:27
* @return
*/
@SuppressWarnings({ "unchecked", "unused", "rawtypes" })
public static Object test() {
Result result = new Result();
Map retMap = new HashMap(); // 封装数据
Object obj = null; // 获取数据1
if(false) { // 检测数据,若数据是错误的
retMap.put("user", obj);
result.setErrNo(1);
result.setErrInfo("错误信息。。。。");
result.setData(retMap);
return result;
}
Object obj2 = null; // 获取数据2
if(false) { // 检测数据,若数据是错误的
retMap.put("user", obj2);
result.setErrNo(1);
result.setErrInfo("错误信息。。。。");
result.setData(retMap);
return result;
}
// 流程都是正确的,封装返回数据
retMap.put("user", obj);
result.success();
result.setData(retMap);
return result;
}
}