您现在的位置:首页 >> 前端 >> 内容

利用InitializingBean Jackson的ObjectMapper进行页面传值

时间:2017/8/4 17:16:29 点击:

  核心提示:一、 准备工作1、 下载依赖库jar包Jackson的jar all下载地址:https://jackson.codehaus.org/1.7.6/jackson-all-1.7.6.jar然后在工程...

一、 准备工作

1、 下载依赖库jar包

Jackson的jar all下载地址:https://jackson.codehaus.org/1.7.6/jackson-all-1.7.6.jar

然后在工程中导入这个jar包即可开始工作

官方示例:https://wiki.fasterxml.com/JacksonInFiveMinutes

ObjectMapper是一个高效转化json格式数据的类,如果创建的是spring boot项目,会自动导入com.fasterxml.jackson 依赖包,我使用的是这个类ObjectMapper。

public class BaseAction extends ActionSupport implements BaseActionInf, ServletRequestAware, ServletResponseAware, CookiesAware, ServletContextAware, InitializingBean {

/**
* 项目初始化,启动方法
*/
@Override
public void afterPropertiesSet() throws Exception {
objectMapper = new ObjectMapper();
// param与前端传值不一致时候,不会报错
objectMapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true);
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
}

/**
* 从键值对获取对象,h5用,加入token
*
* @param clazz
* @return
* @throws Exception
*/
@Override
protected T readParamByParamMap(Class clazz) throws Exception {
return this.readParamByParamMapFinal(clazz, true);


}


/**
* 从键值对获取对象,h5用,加入token
*
* @param clazz
* @return
* @throws Exception
*/
@Override
protected T readParamByParamMapFinal(Class clazz, boolean ifCreate) throws Exception {
HttpServletRequest request = getHttpServletRequest();
Map paramsMap = request.getParameterMap();
Map values = new HashMap();
// if (!StringUtils.isBlank(getCookie("token"))) {
// values.put("token", getCookie("token"));
// }
for (Entry e : paramsMap.entrySet()) {
if (e.getValue() != null) {


if (e.getValue().length == 1) {
values.put(e.getKey(), StringUtils.trim(e.getValue()[0]));
} else if (e.getValue().length > 1) {
List list = Arrays.asList(e.getValue());
values.put(e.getKey(), list);
}


}


}
// map为空
if (values.size() <= 0) {
logger.info("read value is empty.");
if (ifCreate) {
T t = clazz.newInstance();
return t;
}
return null;
}
String s = null;
try {
s = objectMapper.writeValueAsString(values);
logger.info("read value is :" + s);
} catch (Exception e) {
logger.error("", e);
}
s = s.replace("\\\"", "\"");
T t = readValue(reomveStr(s), clazz);
if (t == null) {
t = clazz.newInstance();
}
return t;
}

}

Tags:利用 用I IN NI 
作者:网络 来源:欧耶