1
的Json我想一個JSON數組傳遞給一個Grails控制器,然後到Java類。我無法弄清楚如何正確地將我的參數傳遞給Java類。這是相關代碼。作爲參數傳遞給Grails的控制器
AJAX POST:
$('#matrixForm').submit(function(e) {
e.preventDefault();
var matrixArray = $(this).serializeArray();
$.ajax({
type: "POST",
data: matrixArray,
url: "/turingpages/factorize/create",
success: function(data) {
//USE DATA
}
});
});
的Grails控制器:
...
def create() {
MatrixFactorization m = new MatrixFactorization(params)
Gson gson = new Gson()
def jsonMatrix = gson.toJson(m.answer)
render jsonMatrix
}
...
MatrixFactorization構造:
public MatrixFactorization(JsonElement jsonarray) {
BlockRealMatrix R = GsonMatrix.toMatrix(jsonarray);
this.run(R);
}
我的控制檯顯示我的JSON數組爲:
[{name:"00", value:"1"}, {name:"01", value:"2"}, {name:"02", value:"3"}, {name:"10", value:"4"}, {name:"11", value:"0"}, {name:"12", value:"4"}, {name:"20", value:"0"}, {name:"21", value:"4"}, {name:"22", value:"2"}]
我的堆棧跟蹤是:
| Error 2013-01-18 00:30:23,792 [http-bio-8080-exec-4] ERROR errors.GrailsExceptionResolver - GroovyRuntimeException occurred when processing request: [POST] /turingpages/factorize/create - parameters:
21: 4
20: 0
10: 4
22: 2
00: 1
01: 2
11: 0
02: 3
12: 4
failed to invoke constructor: public matrices.MatrixFactorization(com.google.gson.JsonElement) with arguments: [] reason: java.lang.IllegalArgumentException: wrong number of arguments. Stacktrace follows:
Message: failed to invoke constructor: public matrices.MatrixFactorization(com.google.gson.JsonElement) with arguments: [] reason: java.lang.IllegalArgumentException: wrong number of arguments
Line | Method
->> 15 | create in turingpages.rest.MFController$$ENuqtska
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 195 | doFilter in grails.plugin.cache.web.filter.PageFragmentCachingFilter
| 63 | doFilter in grails.plugin.cache.web.filter.AbstractFilter
| 1110 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 603 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^ 722 | run in java.lang.Thread
我很新的使用JSON。任何幫助表示讚賞。謝謝。
當我使用字符串化,我的request.JSON是一個空對象:'[15:52:12.302] { 「陣列」:[[1,2,3 ],[3,4,5],[5,6,7]]} @ HTTP://本地主機:8080/turingpages/JS/dataFeed.js:15 [15:52:12.499] POST HTTP://本地主機:8080/turingpages /分比化/創建[HTTP/1.1 200 OK 18毫秒] [15:52:12.528] {} @ HTTP://本地主機:8080/turingpages/JS/dataFeed.js:22' – dagilmore
上述日誌是在請求和打印輸出之前打印的數組。在Grails的控制器,我簡單地返回request.JSON – dagilmore
嘗試添加'的contentType:「應用/ json''和'數據類型:」 json''選項 –