我希望在传递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";
}
答案 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)
}