我完全難住爲什麼發生這種情況,我得到的堆棧跟蹤對我沒有什麼幫助。我正在向Grails中的一個控制器發送post
請求。處理請求的操作如下:嵌套每個關閉結果NoSuchMethodError
def save() {
def files = request.getFiles("images")
def json = JSON.parse(request.getParameter("json"))
// Redacted
}
循環超過images
和json
單獨工作正常:
files.each {
println it
}
json.each {
println it
}
但它們築巢並不:
files.each { img ->
json.each { jsn ->
println "$img: $jsn"
}
}
我試圖要做的是用戶上傳X張圖片和json有效載荷。 json將包含上傳文件的新名稱,所以我將遍歷每個文件並將其重命名爲json中指定的名稱。所以我想實現這樣的事情(假設相同的文件和JSON是大小相等的):
files.each { image ->
json.names.each { newName ->
image.renameTo(new File(destination, "$newName.jpg"))
}
}
很奇怪的是,它並不在我的index
動作我做的工作同樣的事情:
categories.each { category ->
images.each { image ->
// Redacted
}
}
但是這裏不同的是,categories
和images
都被定義爲控制器的實例變量:
private categories = []
private images = []
堆棧跟蹤:
URI: /api/images/save
Class: java.lang.NoSuchMethodError
Message: null
Caused by: gabriel.ApiController$_save_closure6: method <init (Ljava/lang/Object;Ljava/lang/Object;)V not found
Line | Method
->> 1142 | runWorker in java.util.concurrent.ThreadPoolExecutor
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 617 | run in java.util.concurrent.ThreadPoolExecutor$Worker
^ 745 | run . . . in java.lang.Thread
Caused by NoSuchMethodError: gabriel.ApiController$_save_closure6: method <init>(Ljava/lang/Object;Ljava/lang/Object;)V not found
->> 91 | save in ApiController.groovy
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 1142 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 617 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^ 745 | run in java.lang.Thread
遍歷每個文件的名稱列表將嘗試將每個文件重命名爲列表中的每個名稱。我想也許你想重命名每個文件的名稱_at在json列表中相同的index_? – doelleri
也請發佈完整的錯誤。 – doelleri
@doelleri啊是的!那麼我會在文件列表中使用'eachWithIndex {}',並從具有相同索引的json中獲取我想要的名稱。我已經更新了問題以包含堆棧跟蹤。它在關閉開始的第一行發生錯誤。 –