我有一个要求,我在@RequestMapping
中使用的ID接受格式为1234567812345678
和abcxyz/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(".+[//]*.*"));
}
}
我已经阅读了之前的一些帖子,但没有什么能给我提供我正在寻找的确切解决方案。
如果有人可以在这一点上抛出一些指针/解决方案,那就太棒了。
答案 0 :(得分:1)
在网址中发送数据时不应使用斜杠。在发送之前,您需要对其进行urlencode。然后它将被解码,然后再发回给你。
有时候,当我遇到这个问题时,我会创建网络安全名称。所以例如我需要发送像“12345/01”这样的ID。当我通过网址在网上发送它们时,我说“12345_01”,我们称之为网络安全ID。然后我们通过在需要真实id时用/替换_来转换它。