リクエスト マッピングを使用したコントローラーがあり@RequestMapping("/**")
ます。それはどういう意味ですか?
上記のマッピングから特定の URL パターンを除外したい場合、どうすればよいですか?
誰かがそれに光を当てることができますか?
リクエスト マッピングを使用したコントローラーがあり@RequestMapping("/**")
ます。それはどういう意味ですか?
上記のマッピングから特定の URL パターンを除外したい場合、どうすればよいですか?
誰かがそれに光を当てることができますか?
正規表現の「否定先読み」構造を使用することで、「URL 除外」または「URL に一致しない」を実現できました。
ハンドラーが静的リソース (CSS/Images/JS など) とエラー ページ以外のすべてを処理するようにします。
エラーページ、つまりresourceNotFoundの処理を防ぐには、次のようにする必要があります
コントローラーで以下を使用します
@Controller
@RequestMapping(value = { "/" })
public class CmsFrontendController {
@RequestMapping(value = { "/" }, headers = "Accept=text/html")
public String index(Model ui) {
return addMenu(ui, "/");
}
@RequestMapping(value = { "{path:(?!resources|error).*$}", "{path:(?!resources|error).*$}/**" }, headers = "Accept=text/html")
public String index(Model ui, @PathVariable(value = "path")String path) {
try {
path = (String) request.getAttribute(
HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE);
return addMenu(ui, path);
} catch (Exception e) {
log.error("Failed to render the page. {}", StackTraceUtil.getStackTrace(e));
return "error/general";
}
}
}
あなたの URL は、「/**」に一致するすべてのリクエストをインターセプトします。これを定義している場所によっては、なぜこれを行う必要があるのか わかりません。クラス レベルでは、これはベース パスを定義する必要があり、メソッド レベルでは特定の関数に絞り込む必要があります。
パターンを除外したい場合は、'/**' を指定するコントローラーよりも高い優先度で注文された別のコントローラーを定義できます。
春のソースからの2つの良い参考文献は次のとおりです。