Spring Roo详细对象

时间:2018-07-05 20:46:22

标签: thymeleaf spring-roo

我正在使用Spring Roo v2.0。我创建了一个具有两个实体的简单应用:图书馆和图书。图书馆可以有更多书籍,所以我一对多创建了一个书架。 我使用以下命令创建了项目:

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

我的问题.. 当我编辑/显示一个库详细信息时,我想在选择一个库后在列表库列表页面中显示其书。

然后...以这种形式,我想要一个“添加”按钮来为该图书馆创建一本书,而不是一本普通书。

我该怎么办?谢谢建议

1 个答案:

答案 0 :(得分:1)

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

为此,您可以使用model方法在为show页提供服务的方法的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插件为上面的表提供其他功能。

希望有帮助