package com.projectr.web;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.beans.propertyeditors.CustomBooleanEditor;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.beans.propertyeditors.CustomNumberEditor;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.support.WebBindingInitializer;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.multipart.support.ByteArrayMultipartFileEditor;
/**
* Shared WebBindingInitializer for custom property editors.
*
* @author aramirez
*
*/
public class CommonBindingInitializer implements WebBindingInitializer {
public void initBinder(WebDataBinder binder, WebRequest request) {
binder.registerCustomEditor(Integer.class, null, new CustomNumberEditor(Integer.class, null, true));
binder.registerCustomEditor(Long.class, null, new CustomNumberEditor( Long.class, null, true));
binder.registerCustomEditor(Boolean.class, null, new CustomBooleanEditor(true));
binder.registerCustomEditor(byte[].class, new ByteArrayMultipartFileEditor());
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy", request.getLocale());
dateFormat.setLenient(false);
binder.registerCustomEditor(Date.class, null, new CustomDateEditor(dateFormat, true));
}
}
В вашем приложении-контексте или диспетчер-сервлете
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="webBindingInitializer">
<bean class="com.projectr.web.CommonBindingInitializer"/>
</property>
</bean>
Аннотация эквивалент кода выше.Обратите внимание, что @ControllerAdvice
введен в Spring 3.2.x
@ControllerAdvice
public class CommonBindingInitializer {
@InitBinder
public void registerCustomEditors(WebDataBinder binder, WebRequest request) {
binder.registerCustomEditor(Integer.class, null, new CustomNumberEditor(Integer.class, null, true));
binder.registerCustomEditor(Long.class, null, new CustomNumberEditor( Long.class, null, true));
binder.registerCustomEditor(Boolean.class, null, new CustomBooleanEditor(true));
binder.registerCustomEditor(byte[].class, new ByteArrayMultipartFileEditor());
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy", request.getLocale());
dateFormat.setLenient(false);
binder.registerCustomEditor(Date.class, null, new CustomDateEditor(dateFormat, true));
}
}