我正在寻找一些不错的解决方案。我的页面上有几个文本字段,我使用jQuery序列化方法通过Ajax发送这些文本字段。这个序列化的字符串在我的java方法中被解析为hashmap,其中key ='nameOfTextfield'nad value ='valueInTextfield'
例如,我有这个字符串 stdSel = value1& stdNamText = value2& stdRevText = value3 ,一切正常。
String[] sForm = serializedForm.split("&");
Map<String, String> fForm = new HashMap<String, String>();
for (String part : sForm) {
String key = null;
String value = null;
try {
key = part.split("=")[0];
value = part.split("=",2)[1];
fForm.put(key, value);
//if textfield is empty
} catch(IndexOutOfBoundsException e) {
fForm.put(key, "");
}
}
但是当某些文本字段中出现&符号时,此方法会崩溃,例如 stdSel = value1&amp; stdNamText = value2&amp; stdRevText = val&amp;&amp; ue3 。我的想法是,我会将&符号替换为searialized字符串中的分隔符,用于其他字符或更多字符。这是可能的好主意还是有更好的方法?
此致 的Ondrej
答案 0 :(得分:0)
&符号 被序列化函数转义,因此它们不会破坏URL。
您需要从URL获取的字段是
value = URLDecoder.decode(value,"UTF-8");
但是,正如Pointy指出的那样,如果您使用的是Web框架而不是仅使用vanilla java.net java,那么您可能不需要这样做。