package com.ydfx.app.controller;
import com.google.common.escape.Escaper;
import com.google.common.html.HtmlEscapers;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import java.beans.PropertyEditorSupport;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author admin
*/
public class BaseController {
/**
* 将前台传递过来的日期格式的字符串,自动转化为Date类型
*
* @param binder
*/
@InitBinder
public void initBinder(ServletRequestDataBinder binder) {
/**
* 自动转换日期类型的字段格式
*/
binder.registerCustomEditor(Date.class, new DateConvertEditor());
/**
* 自动转换字符串类型的字段 字符串转义
*/
binder.registerCustomEditor(String.class, new StringEscapeEditor());
}
}
class DateConvertEditor extends PropertyEditorSupport {
private SimpleDateFormat datetimeFormat = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
@Override
public void setAsText(String text) throws IllegalArgumentException {
if (StringUtils.hasText(text)) {
try {
if (text.indexOf(":") == -1 && text.length() == 10) {
setValue(this.dateFormat.parse(text));
} else if (text.indexOf(":") > 0 && text.length() == 19) {
setValue(this.datetimeFormat.parse(text));
} else if (text.indexOf(":") > 0 && text.length() == 21) {
text = text.replace(".0", "");
setValue(this.datetimeFormat.parse(text));
} else {
throw new IllegalArgumentException(
"Could not parse date, date format is error ");
}
} catch (ParseException ex) {
IllegalArgumentException iae = new IllegalArgumentException(
"Could not parse date: " + ex.getMessage());
iae.initCause(ex);
throw iae;
}
} else {
setValue(null);
}
}
}
class StringEscapeEditor extends PropertyEditorSupport {
public StringEscapeEditor() {
}
@Override
public String getAsText() {
Object value = getValue();
return value != null ? value.toString() : "";
}
@Override
public void setAsText(String text) throws IllegalArgumentException {
if (text == null) {
setValue(null);
} else {
// 字符串转义
Escaper htmlEscaper = HtmlEscapers.htmlEscaper();
setValue(htmlEscaper.escape(text));
}
}
}
initBinder 日期转换 字符串转换(在入参前转化传输参数,自定义数据转换)
最新推荐文章于 2022-05-02 17:03:04 发布