【问题标题】:passing complex input from jquery to Spring MVC将复杂的输入从 jquery 传递到 Spring MVC
【发布时间】:2014-06-17 20:35:39
【问题描述】:

我想要实现的是将参数从 jquery 传递到 Spring Controller。我成功地将简单参数(一个字符串)从 jquery 传递到 Spring bu 如何处理复杂数据?
例如:在 Spring 中,我期望一个 POJO 作为输入参数,并且这个 POJO 有一个 String 属性和一个 List 属性。
POJO:

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){ ... });

我把问号放在我不知道该写什么的地方:)
你能帮帮我吗?
谢谢,维克托

【问题讨论】:

    标签: java jquery spring spring-mvc


    【解决方案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 data-bind 应该相同(即 js 表单中的参数左侧已被字符串化)。

    更新:

    您可以执行以下操作:

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

    是的,您可以在 json 中发送类似的数据。

    如果您为每个事物发送单个数据,则不要使用List。 而不是使用List&lt;classname&gt; 并使用getter-setterclass 中定义所有必需的变量。

    【讨论】:

    • 感谢您的回复!所以这意味着我应该将数据包装在 json 中?例如:{one: something, two: ????} 其实我不知道我怎么能在 json 中使用 List。能否请你帮忙?谢谢
    • @Viktor - 我已经更新了答案,如果有任何问题,请发布。
    • hmmm.. 保持微笑.. 如果您有时间,请查看 MVVM 架构教程或告诉我,我会邮寄给您或邮寄给您..
    猜你喜欢
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    相关资源
    最近更新 更多