对于最新的稳定版本,请使用 Spring Framework 6.2.4spring-doc.cadn.net.cn

DataBinder

@Controller@ControllerAdvice类可以具有@InitBinder方法,更改为 初始化 的实例WebDataBinder.反过来,这些用于:spring-doc.cadn.net.cn

@InitBinder方法可以注册特定于控制器的java.beans.PropertyEditor或 SpringConverterFormatter组件。此外,您可以使用 WebFlux Java 配置来注册ConverterFormatter全局共享FormattingConversionService.spring-doc.cadn.net.cn

@InitBinder方法支持许多相同的参数@RequestMapping方法 do 的@ModelAttribute(command 对象) 参数。通常,它们被声明 替换为WebDataBinder参数、用于注册和void返回值。 以下示例使用@InitBinder注解:spring-doc.cadn.net.cn

@Controller
public class FormController {

	@InitBinder (1)
	public void initBinder(WebDataBinder binder) {
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
		dateFormat.setLenient(false);
		binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));
	}

	// ...
}
1 使用@InitBinder注解。
@Controller
class FormController {

	@InitBinder (1)
	fun initBinder(binder: WebDataBinder) {
		val dateFormat = SimpleDateFormat("yyyy-MM-dd")
		dateFormat.isLenient = false
		binder.registerCustomEditor(Date::class.java, CustomDateEditor(dateFormat, false))
	}

	// ...
}
1 使用@InitBinder注解。

或者,当使用Formatter的设置,通过共享的FormattingConversionService,您可以重复使用相同的方法并注册 控制器特定Formatter实例,如下例所示:spring-doc.cadn.net.cn

@Controller
public class FormController {

	@InitBinder
	protected void initBinder(WebDataBinder binder) {
		binder.addCustomFormatter(new DateFormatter("yyyy-MM-dd")); (1)
	}

	// ...
}
1 添加自定义格式化程序 (一个DateFormatter,在本例中)。
@Controller
class FormController {

	@InitBinder
	fun initBinder(binder: WebDataBinder) {
		binder.addCustomFormatter(DateFormatter("yyyy-MM-dd")) (1)
	}

	// ...
}
1 添加自定义格式化程序 (一个DateFormatter,在本例中)。