2013-07-11 34 views
0

我正在使用Java的播放框架。我有jquery ajax發佈我的數據(String代表JsonNode)。我在我的控制器類中編寫了一個用於提供此Ajax調用的操作方法。如何從播放框架控制器中的單個JsonNode獲取不同Bean中的值

我面臨的問題是,我用jquery ajax發送的數據有10個文本字段值。我有3個bean類(即,MyClass1的, MyClass2 , MyClass3 ) that together have all these 10 variables to capture those textfield values. If I had only a single bean(say, MyClass1`)中都定義了10個變量,我可以寫這樣的:從obj1

JsonNode json = request().body().asJson(); 
MyClass1 obj1 = Json.fromJson(json, MyClass1.class); 

,輕鬆地訪問值。

但我有3個bean和第一個bean我有3個變量,第二個5個變量和第三個2個變量。這產生了一個問題。

如何以正確方式和按需要在MyClass1 obj1,MyClass2 obj2,MyClass3 obj3中獲得這10個文本框值。換句話說,我如何實現JsonNode的拆分。或者類似的東西在所有3個豆中獲得適當的值。

任何幫助或任何線索真的很感激。提前致謝。 可以做些什麼來獲得這些?

+0

我能想到的一種方法是:我應該調用3個不同的ajax調用發送適合於MyClass1,MyClass2,MyClass3的數據值。但是這將成爲最後的優先解決方案,因爲3個http請求並不比單個http請求更好。 –

回答

0

那麼,這個問題的答案很簡單。我所做的是 我添加了以下2號線在bean MyClass1

public MyClass2 m2; 
public MyClass3 m3; 

我不停的代碼在我的控制器的JSON的方法相同,因爲它早些時候,即:

JsonNode json = request().body().asJson(); 
MyClass1 obj1 = Json.fromJson(json, MyClass1.class); 

,並在jQuery的我創建了一個複雜的JSON var(注:看看下面data1):

var data1 = { 
    "dataField1": dataField1, 
    "dataField2": dataField2, 
    "dataField3": dataField3, 
    "data2": data2, 
    "data3": data3 
} 

var data2 = { 
    "dataField4": dataField4, 
    "dataField5": dataField5, 
    "dataField6": dataField6, 
    "dataField7": dataField7, 
    "dataField8": dataField8 
} 

var data3 = { 
    "dataField9": dataField9, 
    "dataField10": dataField10 
} 

,然後同時使JAX調用只是通過data1爲:

$.ajax({ 
    url: '/myUrl/data1', 
    type: 'POST', 
    data: JSON.stringify(data1), 
    contentType: "application/json", 
    .. 
    .. 
    .. 
}); 

現在,在控制器的JSON的方法,我可以訪問obj1.m2obj1.m3並能解決我的問題。 (不需要考慮拆分JsonNode。)

相關問題