请注意,我使用的是百里香&2.5.4春天。例如,我有三个不同的横幅我需要在一个页面上显示的实体。有"mainBanner"
,"backgroundBanner"
和"newsBanner"
。首先,将控制器组合在一起(在横幅实体的框架中)是否是正确的方法?或者存在任何标准说,我们必须为每个实体分别写控制器吗?但主要的问题是如何写@RequestingMapping
正确的横幅页?我有横幅页("/admin/banners/"
),应该是这些实体的三个表。据我所知,我需要创建BannerPageController与@RequestingMapping("/admin/banners/")
,不是吗?希望有任何帮助解决我是这样写控制器的:
# MainBannerController.class
@Controller
@RequestMapping("admin/banners/main/")
@AllArgsConstructor(onConstructor = @__(@Autowired))
public class MainBannerController {
...
# BackgroundBannerController.class
@Controller
@RequestMapping("admin/banners/background/")
@AllArgsConstructor(onConstructor = @__(@Autowired))
public class MainBannerController {
...
# NewsBannerController.class
@Controller
@RequestMapping("admin/banners/news/")
@AllArgsConstructor(onConstructor = @__(@Autowired))
public class MainBannerController {
...
此外,如何为一个视图获得3个不同的模型?# BannerController.class ? ?
@Controller
@RequestMapping("admin/banners/main/")
@AllArgsConstructor(onConstructor = @__(@Autowired))
public class MainBannerController {
private final MainBannerService mainBannerService;
private final MainBannerService mainBannerService;
private final MainBannerService mainBannerService;
// How to get 3 different models for one view?
@GetMapping({"/", ""})
public ModelAndView allBanners() {
// new ModelAndView("/admin/banners/index", "mainBanners", mainBannerService.getAllMainBanners());
// new ModelAndView("/admin/banners/index", "backgroundBanners", backgroundBannerService.getAllBackgroundBanners());
// new ModelAndView("/admin/banners/index", "newsBanners", newsBannerService.getAllNewsBanners());
return null;
}
创建你的modelAndView
ModelAndView modelAndView = new ModelAndView("/admin/banners/index");
然后添加任意多的对象,每个
使用不同的名称modelAndView.addObject("mainBanners", mainBannerService.getAllMainBanners());
modelAndView.addObject("backgroundBanners",mainBannerService.getAllBackgroundBanners());
return modelAndView;
没有任何规则要求你必须为不同的URI创建不同的控制器,但是如果你创建了不同的控制器,将很容易理解你在哪里映射它们。
如果只创建一个控制器对每个不同的方法使用@RestController和@RequestMapping("/your uri")