Spring MVC:一个视图-多个控制器



请注意,我使用的是百里香&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")

最新更新