Grails:使用未知数量的键值对处理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

我正在编写一个控制器,能够处理不同类型的post请求

因此,我希望能够获得请求中键值对的数量,然后将它们作为某种形式的对象(列表或某种迭代器)进行检索,这样我就可以在它们之间循环检索它们的键值,并适当地处理它们

大致如下:

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发送,或者类似于我喜欢调用的键值对)。我将添加我的最终代码作为单独的答案。