我正在编写一个能够处理不同类型的帖子请求的控制器。
因此,我希望能够在请求中获取键值对的数量,然后将它们作为某种形式的对象(列表或某种迭代器)进行检索,以便我可以循环遍历它们检索它们键和值并适当地处理它们。
如下所示:
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);
}
谢谢
答案 0 :(得分:1)
这里要提几件事。首先,这一切都取决于POST数据的编码。例如,如果您以JSON格式发送数据,则将其转换为地图与将其作为Content-Type: application/x-www-form-urlencoded
发送的情况不同(如果您从HTML表单发送数据,就是这种情况)。
如果后者属实,那么您唯一需要做的就是使用普通旧ServletRequest
中的getParameterMap()
。 Grails只会覆盖此方法,以提供与路由良好匹配的数据结构,即GrailsParameterMap。
答案 1 :(得分: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;
}