spring boot RequestParam Class始终为null

时间:2017-06-22 13:07:37

标签: spring

我正在使用Spring boot

我发布表单类(VehicleBrand等)的问题总是为null但其他(vinNumber,plate)不为null ..

我该如何解决..

由于

控制器

    @Transactional
    @PostMapping
    String vehicleAddSubmit(
            @RequestParam String plate,
            @RequestParam String vinNumber,
            @RequestParam VehicleBrand vehicleBrand
    ){
        Vehicle vehicle = new Vehicle();
        vehicle.setVehicleBrand(vehicleBrand);
        vehicle.setEngineNumber(engineNumber);
        vehicle.setVinNumber(vinNumber);
    }

查看

        <form th:attr="action=@{${#mvc.url('VC#vehicleAddSubmit').build()}}"  method="post" class="form-horizontal">
          <input type="text" class="form-control" name="plate" placeholder="Plaka"/>
         <input type="text" class="form-control" name="vinNumber" placeholder="Şase"/>
         <select id="vBrand" name="vehicleBrand" class="form-control">
            <option value="">Marka Seçin</option>
            <option value=""></option>
            <option th:each="vBrand : ${vBrands}"                                                         
                  th:value="${vBrand.id}"                                                            
                  th:text="${vBrand.name}">
            </option>
    </select>
</form>

1 个答案:

答案 0 :(得分:1)

@ReqeustParam的工作方式不同。以下是Spring文档中关于@RequestParam

的摘录
  

注释,指示方法参数应绑定到Web请求参数。

对于POST请求,您应该@RequestBody来获取模型/对象。 Spring会为你做转换。同样,Spring文档中关于@RequestBody

的另一个片段
  

指示方法参数的注释应绑定到Web请求的主体。请求的主体通过HttpMessageConverter传递,以根据请求的内容类型解析方法参数。

@PostMapping
String vehicleAddSubmit(@Request VehicleForm vehicleform){
    //do that you need to do with this vehicle form here.
}

在此VehicleForm中包含您需要的所有字段。

如需进一步了解,请参阅Spring文档。