Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将复杂输入从jquery传递到Spring MVC_Java_Jquery_Spring_Spring Mvc - Fatal编程技术网

Java 将复杂输入从jquery传递到Spring MVC

Java 将复杂输入从jquery传递到Spring MVC,java,jquery,spring,spring-mvc,Java,Jquery,Spring,Spring Mvc,我想要实现的是将参数从jquery传递到Spring控制器。我成功地将简单参数(一个字符串)从jquery传递到Spring,但如何对复杂数据执行同样的操作? 例如:在Spring中,我期望一个POJO作为输入参数,这个POJO有一个String属性和一个List属性。 POJO: JQuery jq.post("/something", ????, function(data){ ... }); 我在不知道写什么的地方打问号:) 你能帮帮我吗? 谢谢,Viktor在js中: ajax.get

我想要实现的是将参数从jquery传递到Spring控制器。我成功地将简单参数(一个字符串)从jquery传递到Spring,但如何对复杂数据执行同样的操作?
例如:在Spring中,我期望一个POJO作为输入参数,这个POJO有一个String属性和一个List属性。
POJO:

JQuery

jq.post("/something", ????, function(data){ ... });
我在不知道写什么的地方打问号:)
你能帮帮我吗?
谢谢,Viktor在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
    }
请记住,表单类的名称和js
form
数据绑定中的名称应该相同(即js表单中已字符串化的参数的左侧)

更新:

您可以执行以下操作:

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

是的,你可以用json发送这样的数据

如果要为每件事发送单个数据,则不要使用
List

而不是使用
列表
并使用
getter setter
中定义所有必需的变量

,谢谢您的回复!这意味着我应该用json来包装数据?例如:{1:something,2:??}实际上我不知道如何在json中创建列表。你能帮忙吗?thanks@Viktor-我已经更新了答案,如果有任何问题,请发布。hmmm。。保持微笑。。若你们有时间的话,看看MVVM体系结构教程,或者告诉我,我会给你们发邮件或者发邮件。。
            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
    }
public class AddBudgetSourceForm  {

    private String sourceName;
    private String sourceEmail;

    // getter and setter

}