0

SpringMVCのアプリに少し問題があります。アプリでユーザーデータを編集したい。したがって、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ファイルが読み込まれません。サーブレットコンテキストファイルにこのフォルダのリクエストマッピングがあります。

<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を使用しているため)。以前は動作しましたが、私がそのようなものを持っている/*/*と動作しません。サーブレットコンテキストファイルのリソースマッピングに問題があると思います。

私は次のように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ようにするため、Webアプリがにデプロイされている場合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(アンカーhref、フォームアクションなど)にも使用する必要があります。

于 2013-01-01T17:35:50.263 に答える