【问题标题】:What is the best way to pass values from jsp to controller in Spring mvc在 Spring mvc 中将值从 jsp 传递到控制器的最佳方法是什么
【发布时间】:2014-11-14 03:34:30
【问题描述】:

我有一个动态配置的 jsp 页面。通过不同的选择,页面有不同的组件,如下拉列表、列表框和日期时间等。一种选择,页面可能只有两个下拉列表,另一种选择,页面有更多的输入字段。每个输入字段都有不同的名称。甚至一页有两个下拉列表,这两个列表有不同的名称。 只是想得到你的建议,在 Spring MVC 中获取所有这些值到控制器的最佳方法是什么。

【问题讨论】:

    标签: spring jsp spring-mvc


    【解决方案1】:

    我会这样做:

    • JSP:将所有输入字段(textbox/select/checkbox/radio)括在<FORM>标签中,并设置表单的action属性以调用Controller。
    • 控制器:
      • 定义一个简单的 Java bean 类,其属性对应于表单中的每个输入字段
      • 接受此类类型作为控制器中将在<FORM> 提交时调用的方法的参数,并使用@RequestBody 注释参数。

    有关完成接线的更多详细信息,请参阅Mapping the response body with the @ResponseBody annotation

    【讨论】:

    • 感谢您的建议。但是一个问题是jsp中所有字段的名称都没有预先定义。并且输入字段的名称是由另一个逻辑动态生成的。所以没有bean可以处理这种情况。我希望得到一个解决方案来自动查找jsp中的所有输入字段并将值传递给控制器​​。
    【解决方案2】:
    1. 创建一个 DTO 来保存所有可能的表单元素

      Class MyFormData {
        private String name;
        private Double salary;
        private List<String> hobbies;
        ......
      }
      
    2. 在控制器中,使用@ResponseBody

      @RequestMapping(value = "/something", method = RequestMethod.POST)
      public void handle(@RequestBody MyFormData formData, Model model) {
          ...
      }
      

    【讨论】:

      【解决方案3】:

      如果您的 UI 如此动态,您不妨硬着头皮选择 Javascript 解决方案。 Spring MVC 将简单地以 @RequestBody 和 @ResponseBody 的形式接收和返回 JSON,而不必担心基本的 MVC。

      JSP 只能在动态 UI 行为方面为您提供到目前为止的帮助。一旦您熟悉了 JQuery 和/或 AngularJS,您将永远不会回头。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-23
        • 1970-01-01
        • 2012-12-08
        • 1970-01-01
        • 2012-11-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多