正则表达式替换Spring @RequestMapping URL中的@PathVariable值

时间:2016-01-25 17:50:17

标签: java regex spring spring-mvc

我有Spring MVC URL在接口中定义(只是为了保存常量),如:

String URL_X = "/my-url/{id:[0-9]*}";
String URL_Y = "/my-url/{id:[0-9]*}/blah-blah";

我有一个替换URL中变量的测试方法:

private static final String REGEX_PARAMETROS_DA_URL = "(\\{[^\\}]*\\})";
    protected String replaceParametersOnURL(String urlSpring, String... params) {
        String urlAtual = urlSpring;
        for (String parametro : params) {
            urlAtual = urlAtual.replaceFirst(REGEX_PARAMETROS_DA_URL, parametro);
        }
        return urlAtual;
    }

我正在使用此正则表达式:(\{[^\}]*\})来匹配变量并替换它。 但现在我有一些网址上有{},我无法找到一个正确的正则表达式来替换我的值变量。

Spring上是否有任何替换PathVariable值的方法,或者任何人都可以帮助我使用这个正则表达式吗?

以此URL为例:

/pessoajuridica/{cnpj:[0-9]{14}}-{slug:[a-zA-Z0-9-]+}/sancoes/resumo

匹配必须为:{cnpj:[0-9]{14}}{slug:[a-zA-Z0-9-]+}

1 个答案:

答案 0 :(得分:1)

谢谢@Matthew。我没有注意到弹簧测试本身可以做到这一点!

我需要做的就是:

mockMvc.perform(get("/pessoajuridica/{cnpj:[0-9]{14}}-{slug:[a-zA-Z0-9-]+}/sancoes/resumo", var1, var2)) ...