当前位置: 首页 > 知识库问答 >
问题:

无法使用JPararePository解析SpringMVC中的ResponseEntity

牛华皓
2023-03-14

这是我的控制器:

package com.hodor.booking.controller;

import com.hodor.booking.jpa.domain.Vehicle;
import com.hodor.booking.service.VehicleService;
import com.wordnik.swagger.annotations.Api;
import org.apache.commons.lang.time.DateUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Date;
import java.util.List;

@RestController
@RequestMapping("/api/v1/vehicles")
@Api(value = "vehicles", description = "Vehicle resource endpoint")

public class VehicleController {

    private static final Logger log = LoggerFactory.getLogger(VehicleController.class);

    @Autowired
    private VehicleService vehicleService;

    @RequestMapping(method = RequestMethod.GET)
    public List<Vehicle> index() {
        log.debug("Getting all vehicles");
        return vehicleService.findAll();
    }

    @RequestMapping(value="/save", method=RequestMethod.POST, consumes="application/json")

    @ResponseBody
    public Vehicle setVehicle(@RequestBody Vehicle vehicle) {
        log.debug("Inserting vehicle");

        if (vehicle.getLicensePlate() == null){
            return new ResponseEntity<Void>(HttpStatus.CONFLICT);
        }

        return vehicleService.saveVehicle(vehicle);
    }
}

在上面的If-Guard中,我想要实现的是,如果vehicle对象没有LicensePlate成员,则发回相应的HTTP状态头冲突或其他东西。

我来自一个节点和Express后台,我被用来设置我的头,发送响应和完成它。然而,在这种情况下(JPA)它似乎不起作用。有什么想法吗?

共有2个答案

史昱
2023-03-14

你使用的是什么版本的spring MVC?在另一篇文章中,如何在返回字符串的spring MVC@ResponseBody方法中使用HTTP 400错误进行响应?。它说明spring MVC4.1和更高版本使用了不同的语法。

尹臻
2023-03-14

另一种选择是利用spring的验证支持对POJO进行声明式添加验证。基本上,您可以向vehicle类添加注释,如:

public class Vehicle {
    @NotNull
    private LicensePlate licensePlate;

    // getters, setters
}

并将@valid注释添加到controller方法:

@ResponseBody
public Vehicle setVehicle(@RequestBody @Valid Vehicle vehicle) {
    log.debug("Inserting vehicle");
    return vehicleService.saveVehicle(vehicle);
}

如果验证失败,spring将返回400响应。

确保在类路径上有JSR-303/JSR-349bean验证实现,比如Hibernate验证器(它可以在没有Hibernate的ORM支持的情况下使用)。

更多信息见《spring参考文件》的验证一章。

 类似资料:
  • 本文向大家介绍SpringMVC ModelAndView的用法使用详解,包括了SpringMVC ModelAndView的用法使用详解的使用技巧和注意事项,需要的朋友参考一下 (一)使用ModelAndView类用来存储处理完后的结果数据,以及显示该数据的视图。从名字上看ModelAndView中的Model代表模型,View代表视图,这个名字就很好地解释了该类的作用。业务处理器调用模型层处理

  • 我创建了一个简单的3实体数据模型,当试图持久化数据时,它不起作用。下面是实体及其id类,server: 服务: 容器: 创建的数据库似乎正常:

  • 本文向大家介绍SpringMVC上传和解析Excel方法,包括了SpringMVC上传和解析Excel方法的使用技巧和注意事项,需要的朋友参考一下 示例:导入相关数据(Excel文件),相关的文件数据编辑好。 XML文件配置 再spring的xml文件中配置要上传文件的大小 Jsp界面配置 js文件 Controller配置 分层没有那么的详细,再Controller中做的处理 工具类ExcelU

  • 我对Groovy还比较陌生,我正试着去了解Gradle。如果我导入组织。jvnet。哈德逊。通过Grapes插件,它可以完美地工作,并且解决了依赖关系。但是,如果我尝试使用Gradle检索依赖关系,则依赖关系不会得到解决。 包适用于Gradle和Grape。 未使用Gradle解决的依赖关系 使用Grape解决的依赖关系 使用Gradle解决的依赖项 Gradle构建过程中的错误 build.gr

  • 错误: 线程“main”java.time.format.dateTimeParseException:无法解析文本“Tue 21 May”:无法从TemporalAccessor获取LocalDate:{DayOfWeek=2,DayOfMonth=21,MonthOfYear=5},类型为java.time.format.dateTimeFormatter.createError(dateTi

  • JSONMappingException:无法从JSON整数实例化类型[simple type,class AuthenticateUser]的值;在com.fasterxml.jackson.databind.deser.std.stdvalueinstantiator.createfromint(stdvalueinstantiator.java:316)在com.fasterxml.jack