1.在session里面放一个map集合,里面存放各种条件,封装存取方法.感觉这种方法很稳定,但是session里面放太多东西不太好.
2.将页面地址及所有参数解析出来,拼装成新地址.那么新地址就可以保存所有的参数了.但是这会有些小问题,比如说转发,那么获得的新地址就会是最初的那个,而不是最终转发的那个.解决方法:重定向.
相关代码:
HttpServletRequest r = ServletActionContext.getRequest();
StringBuffer query = new StringBuffer("");
String uri = r.getRequestURI();
ActionContext c = ActionContext.getContext();
Map params = c.getParameters();
for (Iterator iter = params.keySet().iterator(); iter.hasNext();) {
Object paramKey = iter.next();
if (paramKey == null) {
continue;
}
Object paramValue = params.get(paramKey);
if (paramValue instanceof Object[]) {
query = query.append(extractToStringBuffer(paramKey, paramValue));
} else {
query.append("&");
query.append(paramKey.toString());
query.append("=");
query.append(paramValue.toString());
}
}
uri = uri + query;
private String extractToStringBuffer(Object param, Object values)
throws UnsupportedEncodingException {
String sb = "";
Object[] objs = (Object[]) values;
if (objs == null)
return "";
if (objs.length == 0)
return "";
for (int i = 0; i < objs.length; i++) {
sb = sb + "&";
sb = sb + param.toString();
sb = sb + "=";
Object v = objs[i];
sb = sb + v.toString();
}
return sb;
}