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

创建对象时将状态返回给Angular

郭乐湛
2023-03-14

在我的应用程序中,用户可以将电影标题添加到他们的观看列表中。在我的组件中,我有以下功能:

createMovie(movie: Movie): void {
  this._dataService.createMovie<Movie>({'name': 'Star Wars', 'id': 111, 'description': 'A war in the Stars'})
  .subscribe((data) => this.movies.push(data),
  error => () => {
      'something went wrong';
  },
  () => {
      // console.log(this.movies);
  });
}

这目前有一些虚拟信息。

在我的服务中,我有:

public createMovie<T>(movie: Movie): Observable<T> {
    return this.http.post<T>('/api/movies/', movie, {headers: this.getToken()});
}

所以我将电影对象和令牌传递给后端。

在我的电影ontroller.java我有:

@RestController
@RequestMapping("api/movies")
public class MovieController {

  @Autowired
  private MovieService movieService;

  @RequestMapping(value = "/", method = RequestMethod.POST)
  public Movie createMovie(@RequestBody Movie movie){
      return movieService.createMovie(movie);
  }
}

以及movieService中的createMovie功能:

@Override 
public Movie createMovie(Movie movie) {

    movieRepository.save(movie);

    User current_user = userService.getUser();
    current_user.addMovie(movie);
    userRepository.save(current_user);

    return movie;
}

这一切都很好,但我想在电影成功添加到列表(数据库)时向angular应用程序返回一条消息。我想我应该使用@ResponseBody,但我不确定如何将电影对象和状态文本返回给angular应用程序。

例如,当添加一部电影时,我想从后端返回消息“movie.name已成功添加到您的观察列表”。

共有1个答案

计燕七
2023-03-14

要在对象旁边返回消息,可以定义一个新类,如

public class RestResponse<T>{

    private String message;
    private T obj;

    public RestResponse(String message, T obj){
    this.message = message;
    this.obj = obj;
    }

}

然后在Rest控制器中可以执行以下操作

Movie result =  movieService.createMovie(movie);

return new RestResponse<Movie>(String.format("%s was added to your watchlist", movie.name ), result);
 类似资料:
  • 我正在阅读格式的JSON: 我将“student”存储到一个字符串中,并将每个学生的详细信息——“roll,name,subjects”存储到POJO中。 > ObjectMapper mapper=new ObjectMapper(); Map 返回某个学生的所有主修和辅修课程的最佳方式是什么?我应该做一个hashmap还是列表?或者还有别的办法吗?

  • 问题内容: 如何使用jQuery完成以下操作:打开弹出窗口,当单击子窗口中的链接时,该窗口将返回一个值到父窗口,关闭子窗口,然后让父窗口根据返回的值自动提交表单? 我意识到jQuery对话框是一种流行的解决方案,但是我需要一个弹出窗口,因为该窗口的内容需要可导航,并且我想避免在jQuery对话框中使用iframe。 弹出窗口将用于收集多个值,最终将作为定界字符串返回给父窗口,但是此数据收集需要在提

  • 问题内容: 我想知道,是否可以创建对象池?这样我就可以从池中取出一个对象,一旦完成工作,就可以将其放入池中。 问题答案: 我想知道,是否可以创建对象池?这样我就可以从池中取出一个对象,一旦完成工作,就可以将其放入池中。 有可能。如果新对象的构建成本很高(例如建立数据库连接),或者由于其他原因GC带宽太高(在Android领域通常会出现问题),则可以在许多情况下看到性能提高。 以下是一些可用于实现池

  • 像“addSomething()”这样的类也有方法。这个可以成功也可以不成功。因此,成功的状态可以用一个布尔返回值来显示。但是有时方法调用会因为几个原因而失败。“false”显示了这一点,但只是以一般方式显示。有时程序员想知道失败的原因。为此,提供一个自己的报告类来提供这样的功能有用吗? 然后,您可以决定是否要使用“wassucsuccess()”获取一般成功报告,或者是否还要使用“getMess

  • 我想尝试一下我在C中读到的关于按值返回的内容(在新对象为create的情况下,这与按值传递相同) 终端输出是这样的: > 我希望中的行为是:a.创建Kar2 b。将其复制到Kar 3并返回它(随后将Kar 3分配给Kar 1)。为什么不呢? 如果我取消注释< code > Kar k2 = foo();我得到编译器消息: 错误:没有匹配函数调用Kar::Kar(Kar) 当然,我不能添加构造函数,