无法在spring boot中执行编辑操作

时间:2018-04-09 08:56:08

标签: java spring spring-boot

我希望在传递id时编辑我的用户类,并在将用户对象返回到控制器时收到错误,例如"出现意外错误(类型=内部服务器错误,状态= 500)&#34它告诉我要对可选项进行类型转换。我不知道该怎么做。

UserService类

public User editMyUser(int id) {
    return userRepository.findById(id);
}

控制器类

@RequestMapping("/edit-user")
public String editUser(@RequestParam int id, HttpServletRequest request) {
    userService.deleteMyUser(id);

    request.setAttribute("user", userService.editMyUser(id));
    request.setAttribute("mode", "MODE_UPDATE");
    return "welcome";
}

2 个答案:

答案 0 :(得分:2)

这是findById在新版Spring中的样子(根据文档):

public interface CrudRepository<T, ID extends Serializable>
      extends Repository<T, ID> {

    Optional<T> findById(ID primaryKey);

  // .... other methods ...
}

因此,我要在代码中更改的第一件事是:

public Optional<User> editMyUser(int id) {
    return userRepository.findById(id);
}

让你的方法返回Optional<User>,也许这会有所帮助。

另外,使用该新方法返回的用户时要小心,例如这里

request.setAttribute("user", userService.editMyUser(id));

使用Optional,您需要使用get()来获取实际的用户实例:

userService.editMyUser(id).get()

但首先,您应该检查Optional是否实际包含用户:

Optional<User> optionalUser = userService.editMyUser(id);

if (optionalUser.isPresent()) {
    User user = optionalUser.get();
    // do whatever you need
} else {
   // means user is null - nothing found for ID
   // act accordingly
}

Spring还提供了good documentation。可能有用。

快乐编码:)

答案 1 :(得分:-1)

我告诉你这个现在正在运行的休息服务的接口配置

@Api(value = "empleados", description = "the empleados API")
public interface EmpleadosApi {

    @ApiOperation(value = "Buscar empleados", notes = "", response = ResultadoBusquedaEmpleado.class, tags = {})
    @ApiResponses(value = {
        @ApiResponse(code = 200, message = "Búsqueda de empleados", response = ResultadoBusquedaEmpleado.class) })

    @RequestMapping(value = "/empleados", method = RequestMethod.GET)
    ResponseEntity<ResultadoBusquedaEmpleado> empleadosGet(
            @ApiParam(value = "Nombre de empleado") @RequestParam(value = "nombre", required = false) String nombre)
}