我是springboot的初学者。我遇到了一个情况。哦,在我解释之前,让我给表格结构。
费用
expensesId, categories,
分类
categoryId, categoryname
费用表是指带有 categoryId 的类别表。
我可以使用从控制器发送的datatable
填充expensesList
以成功查看。但我的问题是我填充了columnid
,但我希望用categoryname
填充该列。我想了一段时间可能的解决方案,我想出了愚蠢的想法使用thymeleaf
映射categoryId
和categoryName
的情况,但我不想这样做因为我将来会有更多的类别在增长,代码很难维护。
我真的可以在这方面提供一些帮助。
如果我在谷歌搜索期间错过了解决此问题的解决方案,请提供链接。
对标题部分的英语不好道歉,因为我无法进一步提出问题。
答案 0 :(得分:0)
我刚刚将包含Id和name的类别对象添加到了每个费用对象中 费用对象列表并传递给控制器。现在我可以直接在View with Thymeleaf中使用CategoryName,如下所示
<td th:text="${expense.categories.categoryname}"></td>>
我在控制器中改变了什么。
<强>之前强>
@RequestMapping(value = "/expenses")
public String toExpensesPage(Model model) {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
User user = monitorService.getUserByUserName(authentication.getName()).get(0);
List<Categories> categoriesList = monitorService.getAllCategories();
model.addAttribute("expenses",new Expenses());
if(categoriesList != null) {
model.addAttribute("categories",categoriesList);
}
List<Expenses> expensesList = monitorService.getAllExpensesActive(user.getUserid());
model.addAttribute("expensesList",expensesList);
return "common/expensespage";
}
要。强>
@RequestMapping(value = "/expenses")
public String toExpensesPage(Model model) {
Map<Integer,String> categoryMap = new HashMap<Integer, String>();
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
User user = monitorService.getUserByUserName(authentication.getName()).get(0);
/* getting Category List This contains both categoryId and categoryname */
List<Categories> categoriesList = monitorService.getAllCategories();
/* Using hashmap to map id to name so we dont need to iterate categoryList or call to database with category Id..*/
for(int i = 0; i < categoriesList.size();i++){
categoryMap.put(categoriesList.get(i).getCategoryid(),
categoriesList.get(i).getCategoryname());
}
model.addAttribute("expenses",new Expenses());
if(categoriesList != null) {
model.addAttribute("categories",categoriesList);
}
List<Expenses> expensesList = monitorService.getAllExpensesActive(user.getUserid());
/*Assigning category object to expenses object*/
for(int i = 0; i < expensesList.size();i++){
Categories categories = new Categories();
categories.setCategoryid(expensesList.get(i).getCategories().getCategoryid());
categories.setCategoryname(categoryMap.get(expensesList.get(i).getCategories().getCategoryid()));
expensesList.get(i).setCategories(categories);
}
model.addAttribute("expensesList",expensesList);
return "common/expensespage";
}
在代码中添加了关于我如何做的评论。希望有人觉得它有用。