前端頁面部分資料不顯示問題
阿新 • • 發佈:2022-05-28
不顯示菜品分類。原因是給前端返回的是一個Dish物件,裡面的屬性categoryId不能被前端解析,在list.html中,菜品分類這一列標識為:
<el-table-column prop="categoryName" label="菜品分類" ></el-table-column>
所以封裝一個DishDTO類:
@Data public class DishDto extends Dish { private List<DishFlavor> flavors = new ArrayList<>(); privateString categoryName; private Integer copies; }
查的時候這麼查:
1 @GetMapping("/page") 2 public R<Page<DishDto>> page(int page, int pageSize, String name) { 3 Page<Dish> dishPage = new Page<>(page, pageSize); 4 dishService.page(dishPage, new QueryWrapper<Dish>().like(StringUtils.isNotEmpty(name), "name", name).orderByDesc("update_time"));5 6 Page<DishDto> dishDtoPage = new Page<>(); 7 /** 8 * protected List<T> records; 9 * records裡儲存的就是Dish、DishDTO物件,拷貝的時候,單獨處理 10 */ 11 BeanUtils.copyProperties(dishPage, dishDtoPage, "records"); 12 List<DishDto> dishDtos = dishPage.getRecords().stream().map((item) -> {13 /** 14 * 因為Dish裡只存了categoryId,沒有前端要的categoryName 15 * 所以我們根據categoryId查一下categoryName 16 */ 17 DishDto dishDto = new DishDto(); 18 BeanUtils.copyProperties(item, dishDto); 19 Long categoryId = item.getCategoryId(); 20 String categoryName = categoryService.getById(categoryId).getName(); 21 dishDto.setCategoryName(categoryName); 22 return dishDto; 23 }).collect(Collectors.toList()); 24 dishDtoPage.setRecords(dishDtos); 25 return R.success(dishDtoPage); 26 }