問題

背景: 私は 'Single Page App' Webクライアントのバックエンドを作成しようとしています。これは、/assets/の下のものを除くすべてのリクエストをindex.htmlエントリポイントにルーティングします。

問題: 私は '/ assets /'で始まらないすべてのパスをSpringのRequestMappingと一致させたいと思います。これは、私が積極的に 'assets'と一致する場合に機能しますが、正規表現の 'assets'と否定的に一致する場合は機能しません。

 @ControllerAdvice
@RequestMapping(value="/**")
public class SPARouter {

    @RequestMapping(value = {"/{path:(?!assets)}/**"}, method = RequestMethod.GET)
    public String router() {
        return "forward:/";
    }

}

 

上記のコードは、URLと一致しないため動作しません。 "/{path:(?!assets)}/**""/{path:assets}/**"に置き換えると、/assets/...のようなURLに一致します

したがって、うまくいかないのは、正規表現の負の先読み/一致です。

このようにパターンを否定的に一致させることは可能ですか?

  ベストアンサー

マイナスマッチング部分についてはあまりよく分かりません...

しかし、あなたの具体的な問題(何かを除くすべてのものに対して/に転送)では、私が正常に使用した解決策はインターセプタです。インターセプタはURLをチェックし、必要に応じて転送します。

  同じタグがついた質問を見る

javaregexspringspring-mvc