0

我在 Spring MVC 中的应用程序有一点问题。我想在我的应用程序中编辑用户数据。所以我有编辑控制器,它有 listWorkers、redirectWorker 和 editWorker 方法。

@RequestMapping("/print")
public String listWorkers(Model model)
{
    model.addAttribute("workerList", workerService.getAllWorkers());
    return "print";
}

@RequestMapping("/edit")
public String redirectWorker(HttpServletRequest request)
{
    String parameter = request.getParameter("workers");
    String path = "redirect:/edit/" + parameter;
    return path;
}

    @RequestMapping("/edit/{worker}")
public String editWorker(@PathVariable("worker")
String login, Model model)
{
    model.addAttribute("worker", workerService.getWorker(login));
    return "edition";
}

我对资源和图像文件夹有疑问。例如,当我使用 print 方法时,一切都很好,但是当我尝试使用 editWorker 方法时,我的徽标和 css 文件没有加载。我在 servlet-context 文件中有这个文件夹的请求映射:

<resources mapping="/resources/**" location="/resources/" />
<resources mapping="/images/**" location="/images/" />

当我使用打印方法时,我有这样的 URL:

http://localhost:8080/WWP/print

我可以看到图像和风格。但是当我在我的特定用户上使用编辑方法时,我有这样的 URL:

http://localhost:8080/WWP/edit/caro

这样我就看不到形象和风格了。我有一个警告:

WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/WWP/edit/resources/images/logo.png] in DispatcherServlet with name 'appServlet'
WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/WWP/edit/resources/styles/menu.css] in DispatcherServlet with name 'appServlet'

我在资源文件夹中有图像和样式目录,它直接在 webapp 文件夹中(因为我使用的是 maven)。它更早地工作,但是当我有类似的东西时/*/*它不起作用。我想我的 servlet-context 文件中的资源映射有问题。

我正在加载我的 css 和图像文件,如下所示:

<img src="resources/images/logo.png">
<link rel="stylesheet" href="resources/styles/menu.css" type="text/css"></link>

在此先感谢您的帮助。

4

1 回答 1

3

不要使用相对路径。改用绝对路径:

<img src="<c:url value='/resources/images/logo.png'/>">
<link rel="stylesheet" href="<c:url value='/resources/styles/menu.css'/>" type="text/css"></link>

JSTL <c:url>标记确保上下文路径附加到作为参数传递的绝对路径的属性value中,因此如果您的 webapp 部署到http://localhost:8080/WWP,生成的 HTML 代码将是

<img src="/WWP/resources/images/logo.png">
<link rel="stylesheet" href="/WWP/resources/styles/menu.css" type="text/css"></link>

<c:url>标签还应该用于所有其他 URL:锚链接、表单操作等。

于 2013-01-01T17:35:50.263 回答