我正在使用 Play Framework 2.0.4,在我的模型类中,其中一个变量是一个Array List<Long>
数据类型,在这里声明:
public List<Long> associateBooks = new ArrayList<Long>();
我有一个视图模板,它调用具有两个 Long 值的控制器方法,这些值表示相同模型类型的两个不同对象的 id。
GET /addAssociate/:oID/:id controllers.Application.addAssociate(oID: Long, id: Long)
调用的控制器方法:
public static Result addAssociate(Long oID, Long id) {
Book.addAssociate(oID, id);
return redirect(routes.Application.index());
}
我知道控制器方法正在执行其操作,因为我被重定向到索引页面,并且我知道它接收到值,因为 URL 按预期更改。
问题在于如下所示的 Book 模型方法 addAssociate。
public static void addAssociate(Long oID, Long match) {
List<Book> allBooks = new ArrayList<Book>();
allBooks = find.all();
for(Book book: allBooks) {
if(book.id == oID) {
book.associateBooks.add(match);
book.save();
}
}
}
在这种方法中,我想遍历所有书籍对象,如果 id 与oID
从视图传递到控制器的变量的值匹配,我想将 match 的值(另一个参数)添加到属于的associateBooks
列表(类型Long
)中到每个旅程对象。然后,我尝试将更改保存到此迭代期间正在考虑的对象。问题是当我在其他视图模板上打印它时,列表associateBooks
似乎仍然是空的。
更新:即使我删除了条件,它仍然不会在列表中添加任何内容。