Java 如何写条件,当我在邮递员发送相同的电影名称时,我不会接受相同的电影名称
这是电影课 。我有使用post请求在postman中添加电影的代码Java 如何写条件,当我在邮递员发送相同的电影名称时,我不会接受相同的电影名称,java,json,playframework-2.5,Java,Json,Playframework 2.5,这是电影课 。我有使用post请求在postman中添加电影的代码 public class Movie { private int id; private String movieName; private String description; private String hero; private String heroine; public Movie(){ } public Movie(int id, Stri
public class Movie {
private int id;
private String movieName;
private String description;
private String hero;
private String heroine;
public Movie(){
}
public Movie(int id, String movieName, String description, String hero, String heroine) {
this.id = id;
this.movieName = movieName;
this.description = description;
this.hero = hero;
this.heroine = heroine;
}
//here have setter and getter methods
这是控制器类。现在不接受重复moviename的逻辑是什么
public class MovieController extends Controller {
public static List<Movie> movies;
static {
movies = new ArrayList<>();
movies.add(new Movie(1, "Fprd vs Ferrari", "Movie on Racing", "abcd", "xyz"));
movies.add(new Movie(2, "F2", "Comedy Movie", "Venkatesh", "Tamanna"));
movies.add(new Movie(3, "Titanic", "Movie", "Hero", "Heroine"));
movies.add(new Movie(4, "Saaho", "action", "Prabhas", "Shradda kapoor"));
movies.add(new Movie(5, "Bhahubali 1", "action", "Prabhas", "Tamanna"));
}
public Result insert(Http.Request request) {
JsonNode jsonNode = request.body().asJson();
if (jsonNode == null) {
return badRequest("insufficient movie information");
}
Movie movie = Json.fromJson(jsonNode, Movie.class);
movies.add(movie);
return ok(Json.toJson(movie));
}
您可以这样做:
Movie movie = Json.fromJson(jsonNode, Movie.class);
if(movies.stream().noneMatch(m -> m.getMovieName().equals(movie.getName()))) {
movies.add(movie);
return ok(Json.toJson(movie));
} else {
// Movie name already exists... Throw exception here
return badRequest("Movie already exists");
}
解决此问题的最佳方法是重写Movie对象上的equals方法
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (obj == null || obj.getClass() != this.getClass()) {
return false;
}
Movie movie= (Movie) obj;
return movie.getMovieName().equals(this.movieName);
}
在这里,您可以定义检查两部电影是否相等的逻辑(电影名称比较)。
这种方法将更易于维护
然后使用以下命令检查列表是否包含请求中的电影
if (movies.contains(movie)) {
return badRequest("Movie already exists");
}
movies.add(movie);
return ok(Json.toJson(movie));
你能帮忙吗?我还有一个问题是的,当然。我能帮上什么忙吗?现在我在邮递员尸体上使用pots请求提供身份证。但现在我想在添加电影时自动增加id,现在我有静态电影列表id No:5,它的开始增量从id No.6开始(一旦参考上面的代码,我想您可以理解先生),所以我如何编写logicLet us..equals(movieName)这里它将显示错误为declare local variablereturn movie.getMovieName().equals(this.movieName);在电影课上你们是平等的,对吗?我可以在Movie类中看到变量movieName(this.movieName)
if (movies.contains(movie)) {
return badRequest("Movie already exists");
}
movies.add(movie);
return ok(Json.toJson(movie));