リストにlist.add(Object)を使用してリストのサイズを出力するときはいつでも、プレイするのは初めてですが、0のままです!!!
私の方法は、チュートリアルを高く評価することです。ログインしたユーザーが以前にこのチュートリアルを高く評価したかどうかを確認し、高く評価した場合は、チュートリアルのlikeCountを1つ増やし、ユーザーのいいねリストにチュートリアルを追加します。いいえの場合、それは彼がすでにそれを好きであるとレンダリングします。チュートリアルがリストに保存されていないため、すでに気に入っているかどうかを確認できません!!!
モデル:
@Entity
public class RegisteredUser extends Model {
public String name;
@ManyToMany
public List<Tutorial> contributedTutorials;
public RegisteredUser(String name) {
this.name = name;
this.likeList = newArrayList<Tutorial>();
this.save();
}
}
@Entity
public class Tutorial extends Model {
public String Title;
public int likeCount;
public Tutorial(String title) {
this.title = title;
this.likeCount = 0;
}
コントローラー:public Tutorials extends Controller {public static void likeTutorial(){
if (session.get("RegisteredUserId") != null && session.get("tutID") != null ) {
{
long uId = Long.parseLong(session.get("RegisteredUserId"));
RegisteredUser user = RegisteredUser.findById(uId);
long tId = Long.parseLong(session.get("tutID"));
Tutorial tut = Tutorial.findById(tId);
int x = tut.likeCount;
x++;
if (!(user.likeList.contains(tut)))
// to check that this user didn't like this tut before
{
Tutorial.em().createQuery("update Tutorial set likeCount ="+ x +" where id=" +tId).executeUpdate();
tut.refresh();
user.updateLikeList(tut); // THIS IS NOT WORKING!!!
renderText("You have successfully liked this Tutorial " + user.likeList.size());
}
}
renderText("Opps Something went Wrong!!");
}
}
}
景色 :
<a href="@{Tutorials.likeTutorial()}">Like </a>