如何使用thymeleaf + springboot加载JavaScript文件

时间:2019-05-16 15:02:57

标签: spring spring-boot spring-mvc thymeleaf

我有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;

    }

0 个答案:

没有答案