Grails:使用未知数量的键值对处理post请求
我正在编写一个控制器,能够处理不同类型的post请求 因此,我希望能够获得请求中键值对的数量,然后将它们作为某种形式的对象(列表或某种迭代器)进行检索,这样我就可以在它们之间循环检索它们的键值,并适当地处理它们 大致如下:Grails:使用未知数量的键值对处理post请求,grails,http-post,Grails,Http Post,我正在编写一个控制器,能够处理不同类型的post请求 因此,我希望能够获得请求中键值对的数量,然后将它们作为某种形式的对象(列表或某种迭代器)进行检索,这样我就可以在它们之间循环检索它们的键值,并适当地处理它们 大致如下: def sz = request.size // may or may not be necessary, but would still like to know how def keyValPairs = request.listOfPosts for (def key
def sz = request.size // may or may not be necessary, but would still like to know how
def keyValPairs = request.listOfPosts
for (def keyVal : keyValPairs) {
def key = keyVal.getKey();
def val = keyVal.getVal();
doSomething(key, val);
}
谢谢这里有几件事要提。首先,这完全取决于POST数据的编码。例如,如果以JSON格式发送数据,则将其转换为映射与以
内容类型:application/x-www-form-urlencoded
的形式发送数据不同(如果从HTML表单发送数据就是这种情况)
如果后者为真,那么您需要做的唯一一件事就是使用纯旧版的
getParameterMap()
。Grails仅覆盖此方法以提供与路由配合良好的数据结构,即。,因此示例解决方案如下:
def controllerFunction() {
def enu = request.getParameterMap();
String msg = "";
for (def obj : enu) {
msg += "\n<br/> Object key: " + obj.key;
msg += "\n<br/> Object value: " + obj.value[0]; // [0] seems to remove some problematic square brackets that wrap around the value
msg += "\n<br/> ";
}
render rtn;
}
def controllerFunction(){
def enu=request.getParameterMap();
字符串msg=“”;
用于(def obj:ENS){
msg+=“\n
对象键:”+obj.key;
msg+=“\n
对象值:“+obj.value[0];//[0]似乎删除了围绕该值的一些有问题的方括号
msg+=“\n
”;
}
渲染rtn;
}
谢谢,是的,我应该更具体地说明我要检索的数据类型。事实上,我正在尝试检索内容类型:application/x-www-form-urlencoded(类似于HTML表单的数据通过post发送,或者类似于我喜欢调用的键值对)。我将添加我的最终代码作为单独的答案。