2016-10-25 22 views
1

"generic"を登録した後@RequestMappingリソースハンドラの動作が停止しました。まずSpring + ThymeleafリソースハンドラとRequestMappingが競合する

私はThymeleafで、このリソースの設定があります。

@Value("${ty-resource}")  
private String resource; 

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

は私のリソースは、プロジェクトの外にあるので、その後、私のクライアントは、(彼はそれを求め)彼の意志でそれのリソースを更新することができます。

すべてがOKだった、私のリソースは${user.dir}/../webapp/resources/

から配信beeingてたそれから私は@RequestMapping(value="/{department}/{category}/{subCategory}")を登録。

その後、私のリソースはリソースハンドラからではなく、このリクエストマッピングによって応答され始めました。

私はこの問題を解決するために何をすべきか分かりません。

私はこれについて考えた:

@Value("${ty-resource}") 
private String resourcesPath; 

@RequestMapping('/resources') 
public ModelAndView resources(@RequestParam("r") String resource) { 
    return new ModelAndView("redirect:"+resourcesPath+resource); 
} 

しかし、私は、これが最良の答えかもしれないと思います。

@RequestMapping(value="/{department}/{category}/{subCategory}")@RequestMapping('/resources')より前に登録されているので、私のリソースは@RequestMapping(value="/{department}/{category}/{subCategory}")で応答します。

- 編集 -

例:

<script type="text/javascript" data-th-src="@{/resources/js/components.js}"></script>

このリソース要求は、リソースハンドラではない答えています。私はThymeleaf

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

を使用してリソースをロードし、

<script th:src="@{/resources/js/validation.js}"></script> 

そうであるようにリソースをロードするためにHTMLで絶対パスを使用していますか 春が@RequestMapping(value="/{department}/{category}/{subCategory}")

答えて

0

コントローラでOrderedインターフェイスを実装することでこれを解決しました。

私は最後のものとして解決したいと思っていたコントローラにもっと大きな順序を設定しました。

0

THSのためのマッチングとしてそれを得るですHow to harness url in Spring MVC?選択回答をご覧ください。 これが役立つことを願っています。

+0

私は質問を完了しました。 – Giovane

関連する問題