자바 웹 프로젝트 에서 전후 단 날짜 필드 자동 일치 바 인 딩 처리
정의 BaseController
public class BaseController implements ServletContextAware{
/**
*
**/
protected final Logger log = LoggerFactory.getLogger(BaseController.class);
public HttpServletRequest request;
public HttpServletResponse response;
public HttpSession session;
public ServletContext application;
/**
*
**/
@Autowired(required = false)
protected MultipartResolver multipartResolver;
/**
* @param code
* @return
*/
public static String respJson(CodeEnum code) {
return respJson(code, null);
}
/**
* @param code
* @param data
* @return
*/
public static String respJson(CodeEnum code, Object data) {
JSONObject jsono = new JSONObject();
jsono.put("code", code.getCode());
jsono.put("message", code.getMessage());
if (data != null) {
jsono.put("data", data);
}
return jsono.toJSONString();
}
/**
*
* @param code
* @param message
* @return
*/
public static String respJson(String code , String message ) {
return respJson(code,message,null);
}
/**
*
* @param code
* @param message
* @param data
* @return
*/
public static String respJson(String code , String message , Object data){
JSONObject jsono = new JSONObject();
jsono.put("code",code);
jsono.put("message",message);
if (data != null) {
jsono.put("data", data);
}
return JSON.toJSONString(jsono);
}
@ModelAttribute
public void setReqAndRes(HttpServletRequest request, HttpServletResponse response) {
this.request = request;
this.response = response;
this.session = request.getSession();
}
public void setServletContext(ServletContext arg0) {
this.application = arg0;
}
/**
*
*/
public String getParameter(String key) {
return request.getParameter(key);
}
/**
*
*/
public Page getPage(Class clazz) {
Page page = new Page();
String pageNo = getParameter("pageNo");
String pageSize = getParameter("pageSize");
pageNo = pageNo == null || "".equals(pageNo) ? "1" : pageNo;
pageSize = pageSize == null || "".equals(pageSize) ? "10" : pageSize;
page.setSearchCount(true);
page.setSize(Integer.valueOf(pageSize));
page.setCurrent((Integer.valueOf(pageNo)));
return page;
}
protected String redirectOuter(String url) {
return "redirect:" + url;
}
/**
* binder bean
*/
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(Date.class, new DateEditor());
binder.registerCustomEditor(String.class, new StringEscapeEditor());
}
/**
* str ,
*/
public String getStrParameter(String key, String defaultValue) {
String str = getParameter(key);
if (org.apache.commons.lang3.StringUtils.isEmpty(str)) {
return defaultValue;
}
return str.trim();
}
}
위 코드 에 initBinder 방법 에@InitBinder 주 해 를 추 가 했 습 니 다.이 방법 은 요청 할 때 호출 됩 니 다.변경 방법 에 DateEditor 류 가 있 습 니 다.날짜 처 리 는 이 안에서 처 리 됩 니 다.
DateEditor 클래스
class DateEditor extends PropertyEditorSupport {
@Override
public void setAsText(String text) throws IllegalArgumentException {
if (StringUtils.isEmpty(text)) {
return;
}
text = text.trim();
Pattern pattern = Pattern.compile("[^0-9]");
Matcher matcher = pattern.matcher(text);
text = matcher.replaceAll("");
int length = text.length();
Date date;
switch(length){
case 14:
date = DateTime.parse(text,DateTimeFormat.forPattern("yyyyMMddHHmmss")).toDate();
break;
case 12:
date = DateTime.parse(text,DateTimeFormat.forPattern("yyyyMMddHHmm")).toDate();
break;
case 10:
date = DateTime.parse(text,DateTimeFormat.forPattern("yyyyMMddHH")).toDate();
break;
case 8:
date = DateTime.parse(text,DateTimeFormat.forPattern("yyyyMMdd")).toDate();
break;
case 6:
date = DateTime.parse(text,DateTimeFormat.forPattern("yyyyMM")).toDate();
break;
case 4:
date = DateTime.parse(text,DateTimeFormat.forPattern("yyyy")).toDate();
break;
default: return;
}
setValue(date);
}
}
어떻게 사용 합 니까?
위 에서 준비 가 완료 되면 필요 한 contrller 에서 BaseController 를 계승 하면 됩 니 다!일반 인터넷 의 예 는 다음 과 같은 형식의 날짜 만 지원 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.