0

我有一个要求,其中我使用的 id@RequestMapping接受格式的值1234567812345678abcxyz/abcxy+z$(基本上是一个自动生成的字符串,其中包含/正斜杠)。

我尝试了以下所有 3 种格式的映射,但没有任何效果:

@RequestMapping(value="abc/action/{id: .+[//]*.*}.{format}", method=RequestMethod.PUT) ——什么都不接受。

@RequestMapping(value=" abc/action/{id:.+}.{format}", method=RequestMethod.PUT) -- 接受除了 /

@RequestMapping(value=" abc/action/{id:.*}.{format}", method=RequestMethod.PUT) -- 接受除了 /

但是,当我在普通的 java 程序中尝试相同的正则表达式时,它就像一个魅力:

package miscellenousTest;
public class RegExTest {
    public static void main(String[] args) {
        String s1 ="9876543298765432";
        String s2 =" abcxyz/abcxy+z$";
        System.out.println(s1.matches(".+[//]*.*"));
        System.out.println(s2.matches(".+[//]*.*"));
    }
}

我已经浏览了以前的一些帖子,但没有任何东西能提供我正在寻找的确切解决方案。

如果有人可以在这个问题上提出一些指示/解决方案,那就太好了。

4

1 回答 1

1

在 url 中发送数据时不应使用斜杠。在发送之前,您需要对其进行 urlencode。然后它会在返回给您之前被解码。

有时,当我遇到这个问题时,我会使用网络安全名称。因此,例如,我有时需要发送诸如“12345/01”之类的 ID。当我通过网络以 url 发送它们时,我会说“12345_01”,我们将其称为网络安全 ID。然后,当我们需要真实 id 时,我们通过将 _ 替换为 / 来转换它。

于 2012-04-28T15:24:20.967 回答