0

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

因此,我希望能够获取请求中键值对的数量,然后将它们作为某种形式的对象(列表或某种迭代器)检索,以便我可以遍历它们检索它们的键和值并妥善处理。

如下所示:

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);
}

谢谢

4

2 回答 2

1

这里要提几件事。首先,这一切都取决于 POST 数据的编码。例如,如果您以 JSON 格式发送数据,则将其转换为地图与您将其发送为不同的格式Content-Type: application/x-www-form-urlencoded(如果您从 HTML 表单发送数据就是这种情况)。

如果后者是真的,你唯一需要做的就是使用getParameterMap()from plain old ServletRequest。Grails 仅覆盖此方法以提供与路由完美配合的数据结构,即GrailsParameterMap

于 2013-02-02T13:24:02.413 回答
0

所以一个示例解决方案是:

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; 
}
于 2013-02-04T12:14:52.380 回答