1

データベースから取得したテーブルに「グループ」の詳細をリストするページに、Spring MVC アプリケーションがあります。すべてのグループの URL は「/viewgroup/410」に設定されます。410 は、データベースからロードされ、viewgroup.jsp ページに表示されるグループ ID です。

<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 ページで静的リソースのリソース パスを提供するにはどうすればよいですか?

4

1 に答える 1

1

プロジェクトの任意の URL を介してクエリ パラメーターを渡すという事実は、静的リソースのアドレス指定方法には影響しません。次のように、静的リソースへのリンクを含める必要があります (相対パスなど)。

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

このような静的リソースの解像度は、現在表示しているページから完全に独立してい/viewgroup/410ます/foo/bar。これが、リンクの href の先頭に「viewgroup」が必要ない理由です。

ただし、そのような静的リソースにどのように対処する必要があるかを Spring MVC に伝える必要があります。通常、これは Spring 構成で行われます。たとえば、WebMvcConfigurerインスタンスを介して Spring MVC Java 構成を使用する場合、次のようにaddResourceHandlersメソッドをオーバーライドする必要があります。

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


EDIT:私の悪いことに、Spring MVC +任意のビューテクノロジー(JSP、Thymeleafなど)は、リンクのhrefをWebアプリのルートパスに対して自動的に解決すると思いましたが、これは明らかに、相対リンクのhrefが解決される生のHTMLには当てはまりません現在のパスに対して。最終的に、OP で見つかったように、リンクは、使用中のビュー テクノロジで処理された場合にのみルート パスに対して解決されます (JSP の例では<c:url value="/resources/css/bootstrap.css"/>:)

于 2014-08-18T10:46:05.313 に答える