Spring Roo 详细信息对象

Spring Roo Detail Object

我正在使用 Spring roo v2.0。我创建了一个包含两个实体的简单应用程序:Library 和 Book。一个图书馆可以有更多的书,所以我创建了一个一对多的关系。 我使用以下命令创建项目:

project setup --topLevelPackage com.library 
jpa setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY 
entity jpa --class ~.Library 
field string --fieldName identifier  --notNull
entity jpa --class ~.Book  
field string --fieldName identifier  --notNull
focus --class ~.Library
field set --fieldName book --type ~.Book --mappedBy library --notNull false --cardinality ONE_TO_MANY
repository jpa --all --package ~.repository
service --all --apiPackage ~.service.api --implPackage ~.service.impl 
web mvc setup
web mvc view setup --type THYMELEAF
web mvc controller --all --responseType JSON
web mvc controller --all --responseType THYMELEAF
web mvc detail --all --responseType THYMELEAF

我的问题.. 当我 edit/show 一个图书馆的详细信息时,我想在 select 之后的列表图书馆页面中显示它的书籍。

然后...在这种形式中,我希望有一个添加按钮来为该图书馆创建一本书,而不是一本通用的书。

我该怎么做?谢谢指教

您应该手动自定义与 Library 实体相关的 show.html 视图,以包含包含该信息的 table。

为此,您可以在为 show 页面提供服务的方法的 model 中包含使用 findBooksByLibrary 方法的完整图书列表。像这样:

@Override
@GetMapping(name = "show")
public ResponseEntity<Library> show(@ModelAttribute Library library, Model model) {
   model.addAttribute("books", getBookService().findByLibrary(library));
   return new ModelAndView("libraries/show");
}

之后,编辑 show.html 页面,包括一个 table 元素,显示以前的相关书籍:

<table data-th-each="item : ${books}">
 <tr>
   <td data-th-text="${item.identifier}"></td>
 </tr>
</table>

注意:请记住,您可以使用 Datatables JQuery 插件为上面的 table 提供额外的功能。

希望对您有所帮助