SpringBoot自定义一个convert

当对于页面请求过来的数据Spingboot自带的124个convert不满足我们的需求,即我们需要进行特殊的分解规则的时候就可以自定义一个convert

那么如何自定义呢,可以通过向springboot容器放入一个WebMvcConfigurer,进入这个类,我们可以重写很多方法,其中包括定制化springmvc的很多方法,下面这个就是自定义convert的相关方法

样例:

Person类

@Data
public class Person {
    public String username;
    public Integer age;
    public Pet pet;
}

Pet类

@Data
public class Pet {
    public String name;
    public Integer age;
}

form表单

如果按照注释的掉的代码写,那么会被Springboot自带的convert解析,这里我们自己定义一个convert

<form action="/saveuser" method="post">
    姓名:<input name="username" value="张三"/>
    年龄:<input name="age" value="18"/>
    生日:<input name="birth" value="2019/12/20">
<!--    <input name="pet.name" value="阿猫">-->
<!--    <input name="per.age" value="3">-->
    宠物:<input name="pet" value="阿狗,3">
    <input type="submit" value="保存">
</form>

Controller

直接将person返回到网页打印

    @PostMapping("/saveuser")
    public Person saveuser(Person person) {

        return person;
    }

自定义convert

@Bean
    public WebMvcConfigurer webMvcConfigurer() {
        return new WebMvcConfigurer() {

            @Override
            public void addFormatters(FormatterRegistry registry) {
                registry.addConverter(new Converter<String, Pet>() {
                    @Override
                    public Pet convert(String source) {
                        if(!StringUtils.isEmpty(source)) {
                            Pet pet = new Pet();
                            String[] split = source.split(",");
                            pet.setName(split[0]);
                            pet.setAge(Integer.parseInt(split[1]));
                            return pet;
                        }
                        return null;
                    }
                });
            }
        };
    }

运行测试

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zoeil

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值