簡體   English   中英

Spring 4-MVC-URL參數和靜態資源路徑

[英]Spring 4 - MVC - URL param and static resource path

我有一個spring mvc應用程序,在頁面中,我在表中列出了從數據庫中獲取的“組”詳細信息。 每個組的url設置為“ / viewgroup / 410”,其中410是將從數據庫中加載並顯示在viewgroup.jsp頁面中的groupid。

<td><a href="viewgroup/${group.groupid}">${group.name}</a></td>

因此,控制器方法具有

@RequestMapping("/viewgroup/{groupid}") 
public String viewGroup() {
    ...
}

像這樣。 JSP頁面無法加載目錄結構中的靜態資源

+webapp
  +resources
     +css
     +js
     +images
  +views
    +login.jsp

jsp頁面具有image / js / css的以下路徑。

<link href="resources/css/bootstrap.css" rel="stylesheet" media="screen">

我嘗試添加

@Controller
@RequestMapping("/viewgroup/**")
public class ViewGroupController {
   ...
}

這在jsp中

<link href="viewgroup/resources/css/bootstrap.css" rel="stylesheet" media="screen">

仍然,jsp頁面加載無法加載靜態資源。 當我在url中傳遞參數時,如何在jsp頁面中提供靜態資源的資源路徑?

您通過項目的任何URL傳遞查詢參數的事實並不影響其處理靜態資源的方式。 您只需要包括指向靜態資源的鏈接(例如,作為相對路徑),如下所示:

<link href="/resources/css/bootstrap.css" rel="stylesheet" media="screen">

此類靜態資源的分辨率完全獨立於您當前正在查看的頁面,無論是/viewgroup/410還是/foo/bar 這就是為什么鏈接的href開頭不需要“視圖組”的原因。

但是您確實需要告訴Spring MVC它應該如何處理此類靜態資源。 通常,這是在Spring配置中完成的。 例如,如果通過WebMvcConfigurer實例使用Spring MVC java config,則應以以下方式覆蓋addResourceHandlers方法:

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
    }


編輯:我不好,我認為Spring MVC +任何視圖技術(JSP,Thymeleaf等)都會根據Web應用程序的根路徑自動解析鏈接的href,但這顯然不適用於解析相對鏈接的href的原始HTML反對當前的道路。 因此,最后,如OP所見,只有使用正在使用的視圖技術處理鏈接時,才可以針對根路徑解析鏈接(在使用JSP的示例中: <c:url value="/resources/css/bootstrap.css"/>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM