我正在使用百日咳作为我的春季启动项目的模板引擎。
我的目录结构是:
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
答案 0 :(得分:0)
您可以使用绝对路径而不是相对路径,例如/admin/css/template.css
而不是../../admin/css/template.css
。根据您的特定资源解析程序配置,这可能有效,也可能无效。