如何在@RequestMapping中使用“/”正斜杠?

时间:2012-04-28 15:16:59

标签: spring-mvc url-mapping

我有一个要求,我在@RequestMapping中使用的ID接受格式为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(".+[//]*.*"));
    }
}

我已经阅读了之前的一些帖子,但没有什么能给我提供我正在寻找的确切解决方案。

如果有人可以在这一点上抛出一些指针/解决方案,那就太棒了。

1 个答案:

答案 0 :(得分:1)

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

有时候,当我遇到这个问题时,我会创建网络安全名称。所以例如我需要发送像“12345/01”这样的ID。当我通过网址在网上发送它们时,我说“12345_01”,我们称之为网络安全ID。然后我们通过在需要真实id时用/替换_来转换它。