2014-05-01 50 views
1

我想實現的是將參數從jquery傳遞到Spring控制器。我成功地將簡單參數(一個字符串)從jquery傳遞到Spring bu,我怎樣才能對複雜的數據做同樣的事情?
例如:在Spring中,我期望POJO作爲輸入參數,並且此POJO具有String屬性和List屬性。
POJO:將複雜的輸入從jquery傳遞到Spring MVC

public class SimplePojo { 
    private String one; 
    private List<String> two; 
    ... 
} 

春控制器:

@RequestMapping(value = "/something", method = RequestMethod.POST) 
public @ResponseBody String check(@RequestParam(????) SimplePojo input) { ... } 

JQuery的

jq.post("/something", ????, function(data){ ... }); 

我把問號的地方,我不知道的地方,爲寫什麼:)
你能請幫幫我?
感謝,尤

回答

1

在JS:

ajax.get('api/checkout_patron/patron_id='+self.patronId()) 

在java中:

@RequestMapping(method= RequestMethod.GET,value = "/patron_id={patron_id}") 
    public @ResponseBody 
    Response getPatron(@PathVariable String patron_id){ 

} 

這裏JS請求我已經使用映射:在類聲明之前

@Controller 
@RequestMapping(value = "/api/checkout_patron") 

這裏我使用的是knockout js,所以我使用這種模式來傳遞請求。

二小例子跟我的技術:

  var form={ 
       sourceName : self.sourceName(),     
       sourceEmail :self.email() 
      } 
      ajax.post('api/source',JSON.stringify(form)).done(function(response){ 

      }); 

在這裏得到的數據:

@RequestMapping(method= RequestMethod.POST,consumes = "application/json") 
    public @ResponseBody 
    ResponseEntity<IWebApiResponse> addBudget(@RequestBody AddBudgetSourceForm form){ 
     //your code to process data 
    } 

AddBudgetSourceForm類

public class AddBudgetSourceForm { 

    private String sourceName; 
    private String sourceEmail; 

    // getter and setter 

} 

保持一件事記住,形式的名稱並在js form da ta-bind應該是相同的(即已被串化的js形式的參數左側)。

UPDATE:

你可以這樣做以下:

List<String> var = new ArrayList<>(); var.add(form.getSourcename()); var.add(form.getSourceEmail());

,是的,你可以在JSON這樣的發送數據。

如果您要爲每件東西發送單個數據,請不要使用List。 而不是使用List<classname>並在classgetter-setter中定義所有必需的變量。

+0

感謝您的回覆!所以這意味着我應該在json中包裝數據?例如:{one:something,two:????}其實我不知道json中的列表。能否請你幫忙?謝謝 – Viktor

+0

@Viktor - 我已經更新了答案,如果有任何問題,然後張貼。 –

+0

非常好,非常感謝! – Viktor

相關問題