Servlet httprequest wrapper -> $_REQUEST + $_FILE
时间:2010-07-18 来源:key232323
servlet(3.0不知道是否还是如此),request.getParameter和request.getParameterValues很恶心,就像request.getParameterMap一样,事先你得知道是参数个数是多个还是一个——checkbox,or input。
Freemarker的servlet包里有俩关于request的wrapper,分别是request的attribute和parameter,结果有几行——
for (Enumeration enumeration = request.getParameterNames(); enumeration.hasMoreElements();) {
keys.add(enumeration.nextElement());
}
***
public Object next() {
return request.getParameter((String)iter.next());
}
——完全就把request.getParameterValues不考虑进去么,php的$_REQUEST用了一个约定,input name="ll[]" type="checkbox" => $_REQUEST['ll] = array('choosed1', 'choosed2'),
java里,你也可以搞这么一下,parameterNames中以'[]'结尾的都是数组,同理,上传方面,用一个扩展自HttpServletRequestWrapper的重写下getParameterMap和getParameterNames,这样,freemarker的那个HttpRequestParametersHashModel的组织结构
就变成这样的了
params = hashmodel
._files = hashmodel
单独拿出来自己在逻辑控制层写代码也像Spring的ModelMap一样了,如此以来,什么url route,参数绑定,都好弄了