我现在遇到一个难题,spring mvc框架的方法如下:Map data =new HashMap();
List list = new ArrayList();
list.add("b1");
list.add("b2");
data.put("paramA", "a");
data.put("paramB", list);
return new ModelAndView(getSuccessView(), "data", data);
success view是redirter 跳转
最后我们得到的的url如下:
   http://..../.../example.jsp?data={paramA=a,paramB=b1,b2}以后可能参数还会出现很多(比如再增加paramC,paramD....)    我们都将这些放入到data对象中

这样我们需要一个处理类可以对这个进行url处理,最后将参数处理成一个key value的数组
不知道谁有比较好的办法?
最好用正则表达式。

解决方案 »

  1.   

    将这些参数放到 hidden 中.
    用post 提交不好些吗?
      

  2.   

    (\w+=\w+,)\w+=\w+
    可以提取花括号里面的内容,得到一个字符串s,s.split(",")解析即可。
      

  3.   

    String data = 、、、
    1 去掉大括号
    data = data.replace("{,""),replace("}","");
    2 用逗号分隔
    String[] parts = data.split(",");
    3 每个都是一个单独的key=value 了
    然后 用等号分割
    for(String part : parts){
      String kv = part.split("="); 
      String key = kv[0];
      String value = kv[1];
    }
      

  4.   

    最后将参数处理成一个key value的数组 没见到过key value的数组,只见到过key value的map;需求不明确,无法解答。
      

  5.   

    package A;import java.util.HashMap;
    import java.util.Map;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class a {    /**
         * @param args
         */
        public static void main(String[] args) {
            String s = "http://..../.../example.jsp?data={paramA=a,paramB=b,paramC=c}";
            String s1 = "(.*?)\\{(.*?)\\}";
            Pattern p = Pattern.compile(s1);
            Matcher m = p.matcher(s);
            String sub = "";
            if (m.find()) {
                sub = m.group(2);
            }
            String[] array = sub.split(",");
            Map<String, Object> map = new HashMap<String, Object>();        for (String ss : array) {
                map.put(
                    ss.substring(
                        0,
                        ss.indexOf("=")),
                    ss.substring(ss.indexOf("=") + 1));
            }     
        }
    }