我有2种方法返回一个ModelAndView
对象。
第一个从浏览器获取映射,并返回链接到modelandview
文件的html
。
最后,在该html文件上,我将脚本标签链接到spring根,如下所示:
<!-- Calendar Js -->
<script type="text/javascript" src="../../../static/assets/vendor/netcorr/calendar/calendar.js"
th:src="@{/customer/web/wall/calendarItems(wallId=${wallId})}"></script>
在控制器中,我有第二种方法基于上面的调用进行加载:
/customer/web/wall/calendarItems(wallId=${wallId})
此方法向modelandview
中抛出了视图中需要的一些对象。
此modelandview
的根目录为js
文件。
问题是html
不会加载上面调用的js
文件。
尝试了Stackoverflow上的一些解决方案,这些解决方案是在mvdconfig
控制器中处理所有这些问题。
然后抛出依赖关系,并确保依赖关系适用于Spring 4。
我正在使用Spring 1.5.9和spring-boot-starter-thymeleaf
@GetMapping(value = "/customer/web/wall/calendar", params = {"wallId"})
public ModelAndView calendar(@RequestParam(value = "wallId") long wallId,
Authentication auth,
RedirectAttributes redirectAttributes){
ModelAndView modelAndView = new ModelAndView("/customer/wall/calendar");
modelAndView.addObject("wallId",wallId);
return modelAndView;
}
@GetMapping(value = "/customer/web/wall/calendarItems", params = {"wallId"})
public ModelAndView calendarItems(@RequestParam(value = "wallId") long wallId,
Authentication auth,
RedirectAttributes redirectAttributes){
User currentUser = (User) auth.getPrincipal();
Set<Long> wallIds = new HashSet<>();
wallIds.add(wallId);
PlaybookFilters playbookFilters = new PlaybookFilters();
playbookFilters.setCustomerId(currentUser.getCustomerId());
playbookFilters.setWallIds(wallIds);
List<Playbook> playbooks = playbookService.getPlaybooks(playbookFilters);
Date dateBegin = calendarService.getDateBegin();
Date dateEnd = calendarService.getDateEnd();
List<CalendarItem> calendarItems = calendarService.fetchPbiForPlaybooks(playbooks, dateBegin, dateEnd);
ArrayNode items = objectMapper.createArrayNode();
calendarItems.forEach(item -> items.add(item.toJsonNode()));
ModelAndView modelAndView = new ModelAndView("/customer/wall/calendarItems");
modelAndView.addObject("events", items);
return modelAndView;
}