날짜 또는 숫자의 컴마 공통처리
1. 커스텀 클래스 생성
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.Locale;
import javax.servlet.Servlet;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.beans.propertyeditors.StringTrimmerEditor;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.AutoConfigureOrder;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.support.ConfigurableWebBindingInitializer;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import com.solution.framework.convert.ConvertDate;
import com.solution.framework.convert.ConvertNumber;
/**
*
* @author ljo
*
*/
@Configuration
@ConditionalOnWebApplication
@ConditionalOnClass({ Servlet.class, DispatcherServlet.class, WebMvcConfigurerAdapter.class })
@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE + 10)
@AutoConfigureAfter(DispatcherServletAutoConfiguration.class)
public class WebBindingInitializer extends ConfigurableWebBindingInitializer {
@Override
public void initBinder(WebDataBinder binder, WebRequest request) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
dateFormat.setLenient(false);
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));
// Trim 처리
binder.registerCustomEditor(String.class, new StringTrimmerEditor(true));
Iterator fields = request.getParameterNames();
if (fields != null && fields.hasNext()) {
while (fields.hasNext()) {
String field = fields.next();
// 일자(DT) 도메인일 경우 "YYYY-MM-DD" 값에서 "-" 를 제거함
if (StringUtils.endsWith(field, "Dt")) {
binder.registerCustomEditor(String.class, field, new ConvertDate());
}
// 수(CNT), 시간(TM), 금액(AMT), 합계(SUM) 도메인일 경우 숫자 이외 문자 제거
else if (StringUtils.endsWith(field, "Cnt")
|| StringUtils.endsWith(field, "Tm")
|| StringUtils.endsWith(field, "Amt")
|| StringUtils.endsWith(field, "Price")
|| StringUtils.endsWith(field, "Cash")
|| StringUtils.endsWith(field, "Sum")) {
binder.registerCustomEditor(String.class, field, new ConvertNumber());
}
}
}
}
}
2. 컨버트 클래스 샘플
import java.beans.PropertyEditorSupport;
import org.apache.commons.lang3.StringUtils;
public class ConvertNumber extends PropertyEditorSupport {
@Override
public void setAsText(String text) throws IllegalArgumentException {
if (StringUtils.isEmpty(text)) {
setValue(null);
return;
}
setValue(text.replaceAll("\\D", ""));
}
}
'개발 > java&kotlin' 카테고리의 다른 글
Spring boot - logback 로그처리 (0) | 2020.03.27 |
---|---|
java 로 캡챠 구현 (0) | 2020.03.26 |
spring 크로스 도메인 처리 (0) | 2018.07.12 |
POI 엑셀 다운로드 (0) | 2018.07.11 |
spring boot 스케줄러 설정 (0) | 2018.07.11 |