thymeleaf正在根据其余的URI加载静态资源

时间:2015-07-26 21:13:00

标签: html css spring-boot thymeleaf

我正在使用百日咳作为我的春季启动项目的模板引擎。

我的目录结构是:

src/main/
|- java
    | - UserAdministrationController.java
|- resources
    | - static
        | - admin
             | - css
                 | - template.css
             | - js
                 | - template.js
    | - templates
        |- incs
            |- inc_form_create_user.html
        |- users.html

我的控制器注释为:

@Controller
@RequestMapping("/administration/users")

我有一个获取用户页面的方法:

@RequestMapping("")
    public ModelAndView getUsersPage() {
        return new ModelAndView("admin/users");
    }

创建用户的方法:

@RequestMapping(value = "/create", method = RequestMethod.POST)
    public String handleUserCreateForm(@Valid @ModelAttribute("form") UserDTO form, BindingResult bindingResult) {
        if (bindingResult.hasErrors()) {
            return getUsersPage().getViewName();
        }
        try {
            userService.create(form);
        } catch (DataIntegrityViolationException e) {
            bindingResult.reject("email.exists", "Email already exists");
            return getUsersPage().getViewName();
        }
        return "redirect:/administration/users";
    }

一种方法,当它被调用时,它在模型中添加一个用户(填写表格):

@RequestMapping("/{id}/edit")
    public ModelAndView getEditPage(@PathVariable("id") long id) {
        ModelAndView model = new ModelAndView("admin/users");

        model.addObject("userToEdit", userService.getUserById(id));

        return model;

    }

我正在使用相同的页面,使用includes来处理:

<div th:if="${userToEdit == null}" class="panel panel-default" th:include="admin/incs/inc_form_create_user :: createUserForm" ></div>
<div th:if="${userToEdit != null}" class="panel panel-default" th:include="admin/incs/inc_form_create_user :: editUserForm" ></div>

我的CSS文件已导入:

<link th:href="@{../../admin/css/template.css}" rel="stylesheet" />

当我转到user.html时,它也能正常工作。问题是,当我调用具有不同URI的编辑方法时。

当我调用create时,url看起来像这样:

http://localhost:8080/administration/users

当我致电编辑时:

http://localhost:8080/administration/users/10/edit

两种情况下的导入:

../../admin/css/template.css

但在编辑案例中,浏览控制台告诉我:

Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:8080/administration/admin/css/template.css

1 个答案:

答案 0 :(得分:0)

您可以使用绝对路径而不是相对路径,例如/admin/css/template.css而不是../../admin/css/template.css。根据您的特定资源解析程序配置,这可能有效,也可能无效。