【问题标题】:Pass a multidimensional array from jsp to controller将多维数组从 jsp 传递到控制器
【发布时间】:2013-12-31 08:33:40
【问题描述】:

我正在创建一个更新页面,我在其中使用 jquery 创建一个由更新的 propertyName 和旧值组成的二维数组。我这样做是为了不需要在服务器上检查更新的属性。这个 updatedParam 变量我需要将它传递给 Spring 控制器。这应该怎么做?此变量不是模型支持的表单的一部分。

我已经在控制器中尝试了以下方法,但它不起作用

@RequestMapping(value = "/updateEmployee.html", method = RequestMethod.POST)
public String updateEmployee(                       
        BindingResult result, @ModelAttribute("employee") Employee employee,
        ModelMap model,
        @ModelAttribute(value = "updatedParam") Map<String,String> updatedParam) {

我什至试过这个,但即使它不起作用

@RequestMapping(value = "/updateEmployee.html", method = RequestMethod.POST)
public String updateEmployee(                       
        BindingResult result, @ModelAttribute("employee") Employee employee,
        ModelMap model,
        @ModelAttribute(value = "updatedParam") String[][] updatedParam) {

注意:updatedParam 是我在 jsp 中生成的变量,我希望在提交表单时调用此操作时传递它。

另外请注意表单提交代码

$("#updateEmployeeForm").submit(function(){
    //Compute updatedParam Here
    // I tried submiting the form using ajax and passing updated param as data but does not work 

});

请指教。在萤火虫控制台中,我不断收到以下错误消息,但我认为它与此无关

未声明 HTML 文档的字符编码。如果文档包含 US-ASCII 范围之外的字符,则文档将在某些浏览器配置中呈现乱码。页面的字符编码必须在文档或传输协议中声明。

【问题讨论】:

  • 用spring-mvc处理数组并不容易。我认为,您最好将所有数据放入一个新的类实例中,并将其作为 RequestBody/ResponseBody 传递。
  • 不清楚你想要什么。您是否发送表单数据和更新的字段?你为什么要为一个结构明确的对象使用数组?如果它是属性名称-> 值而不是地图。除此之外,客户端可能会发送虚假数据。依赖客户是一种不好的做法。

标签: jquery arrays spring jsp spring-mvc


【解决方案1】:

我这样做是为了不需要在服务器上检查更新的属性。

这是错误的。

您应该始终在服务器上检查用户发送的所有内容。
客户端验证是不够的,因为客户端很容易欺骗它。

我的建议只是让propertyName 成为表单支持对象的一部分并在服务器端验证它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    • 2012-12-08
    • 2021-08-27
    • 1970-01-01
    • 2019-04-01
    • 1970-01-01
    相关资源
    最近更新 更多