SpringBootにおけるカスタムパラメータバインディング手順の詳細
通常の場合、フロントエンドから渡されたパラメータはそのままSpringMVCで受信できますが、Dateオブジェクトのような特殊な場合もあります。私のフロントエンドからの日付が来たら、サービス先のカスタムパラメータをバインドして、フロントエンドの日付を変換します。カスタムパラメータバインディングも簡単で、二つのステップに分けられます。
1.カスタムパラメータ変換器
カスタムパラメータ変換器は、以下の通りCoverterインターフェースを実現します。
2.コンフィギュレーション変換器
カスタムWebMvcConfigはWebMvcConfigrer Adapterを継承して、addFormaters方法で構成します。
1.カスタムパラメータ変換器
カスタムパラメータ変換器は、以下の通りCoverterインターフェースを実現します。
public class DateConverter implements Converter<String,Date> {
private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
@Override
public Date convert(String s) {
if ("".equals(s) || s == null) {
return null;
}
try {
return simpleDateFormat.parse(s);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
}
convert方法は文字列パラメータを受信して、このパラメータは先端から伝わった日付文字列です。この文字列はyyy-M-ddフォーマットを満たしています。そしてSimpleDateFormatを通じてこの文字列をDateオブジェクトに変換して返してもいいです。2.コンフィギュレーション変換器
カスタムWebMvcConfigはWebMvcConfigrer Adapterを継承して、addFormaters方法で構成します。
@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addFormatters(FormatterRegistry registry) {
registry.addConverter(new DateConverter());
}
}
OKです。上記の2つのステップの後、フロントエンドから文字列の日付を受信し、Java中のDateオブジェクトに変更できます。フロントエンドの日付コントロールは以下の通りです。
<el-date-picker
v-model="emp.birthday"
size="mini"
value-format="yyyy-MM-dd HH:mm:ss"
style="width: 150px"
type="date"
placeholder=" ">
</el-date-picker>
サービスインターフェースは以下の通りです。
@RequestMapping(value = "/emp", method = RequestMethod.POST)
public RespBean addEmp(Employee employee) {
if (empService.addEmp(employee) == 1) {
return new RespBean("success", " !");
}
return new RespBean("error", " !");
}
このうちEmployeeには、bithdayという属性があります。この属性のデータタイプはDateです。