Java 正在填充行,其中一列引用了另一个表(数据库)。需要显示引用表的另一列吗
我是springboot的初学者。我遇到了一个情况。好的,在我解释之前,让我先给出表格结构 费用Java 正在填充行,其中一列引用了另一个表(数据库)。需要显示引用表的另一列吗,java,spring-boot,thymeleaf,Java,Spring Boot,Thymeleaf,我是springboot的初学者。我遇到了一个情况。好的,在我解释之前,让我先给出表格结构 费用 expensesId, categories, categoryId, categoryname 类别 expensesId, categories, categoryId, categoryname 费用表是指类别ID为的类别表 我能够使用从控制器发送到视图的expensesList填充datatable。但我的问题是我在填充中得到了columnid,但我希望用categoryname来填
expensesId, categories,
categoryId, categoryname
类别
expensesId, categories,
categoryId, categoryname
费用表是指类别ID为的类别表
我能够使用从控制器发送到视图的expensesList
填充datatable
。但我的问题是我在填充中得到了columnid
,但我希望用categoryname
来填充该列。我考虑了一段时间可能的解决方案,我想出了一个愚蠢的想法,如果映射categoryId
的thymeleaf
中的条件与categoryName
匹配,但我不想做那部分,因为我将来会有更多的类别增长,代码很难维护
我真的需要一些帮助
请提供链接,如果一个解决方案已经可用,我错过了在我的谷歌搜索这个问题
很抱歉标题部分的英文不好,因为我无法进一步压缩这个问题。我刚刚将包含Id和名称的类别对象添加到了中的每个费用对象中 费用对象列表并传递给控制器。现在,我可以直接在视图中使用CategoryName和Thymeleaf,如下所示
<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”)
公共字符串到费用页(模型){
身份验证=SecurityContextHolder.getContext().getAuthentication();
User User=monitorService.getUserByUserName(authentication.getName()).get(0);
List categoriesList=monitorService.getAllCategories();
model.addAttribute(“费用”,新费用());
if(categoriesList!=null){
model.addAttribute(“categories”,categoriesList);
}
List expensesList=monitorService.getAllExpensesActive(user.getUserid());
model.addAttribute(“expensesList”,expensesList);
返回“普通/费用支出”;
}
至。
@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";
}
@RequestMapping(value=“/expenses”)
公共字符串到费用页(模型){
Map categoryMap=新HashMap();
身份验证=SecurityContextHolder.getContext().getAuthentication();
User User=monitorService.getUserByUserName(authentication.getName()).get(0);
/*获取类别列表此列表包含categoryId和categoryname*/
List categoriesList=monitorService.getAllCategories();
/*使用hashmap将id映射到name,这样我们就不需要迭代categoryList或使用category id调用数据库*/
对于(int i=0;i
添加了关于我如何做的评论的内部代码。希望有人能帮上忙。我可以知道投票失败的原因吗?因为我看不出任何合理的理由。我发布了一个问题,没有引起注意,我尝试了各种解决方案,我发布了我找到的解决方案,希望有人能从中受益。此外,这个问题也不是重复的。