场景:对于前端传递过来的数据(GET),比如 Long类型的日期,希望在后台直接获取到LocalDataTime的数据,可以采用Converter来做转化。
例子:
@Component
public class String2LocalDataTimeConverter implements Converter<String,LocalDateTime> {
Pattern pattern = Pattern.compile("^([0-9]{13})$");
@Override
public LocalDateTime convert(String source) {
//只对get方式的url上的参数有意义
Matcher matcher = pattern.matcher(source);
if(matcher.matches()) {
Long time = Long.parseLong(source);
return Instant.ofEpochSecond(time).atOffset(ZoneOffset.of("+08:00")).toLocalDateTime();
}
/**
* 抛出异常表示此转化器不适用,会使用另外一个转化器
*/
throw new RuntimeException();
}
}
Controller:如下:
@Slf4j
@RestController
@RequestMapping(value = "/sample")
public class SampleController {
@Resource
private SampleService sampleService;
@ResponseBody
@RequestMapping(value = "test")
public String test(TestConver testConver) {
System.out.println(testConver);
return testConver.toString();
}
}
TesrConver如下:
@Data
public class TestConver {
private LocalDateTime time;
private String name;
}
测试