【发布时间】:2014-11-14 03:34:30
【问题描述】:
我有一个动态配置的 jsp 页面。通过不同的选择,页面有不同的组件,如下拉列表、列表框和日期时间等。一种选择,页面可能只有两个下拉列表,另一种选择,页面有更多的输入字段。每个输入字段都有不同的名称。甚至一页有两个下拉列表,这两个列表有不同的名称。 只是想得到你的建议,在 Spring MVC 中获取所有这些值到控制器的最佳方法是什么。
【问题讨论】:
标签: spring jsp spring-mvc
我有一个动态配置的 jsp 页面。通过不同的选择,页面有不同的组件,如下拉列表、列表框和日期时间等。一种选择,页面可能只有两个下拉列表,另一种选择,页面有更多的输入字段。每个输入字段都有不同的名称。甚至一页有两个下拉列表,这两个列表有不同的名称。 只是想得到你的建议,在 Spring MVC 中获取所有这些值到控制器的最佳方法是什么。
【问题讨论】:
标签: spring jsp spring-mvc
我会这样做:
<FORM>标签中,并设置表单的action属性以调用Controller。 <FORM> 提交时调用的方法的参数,并使用@RequestBody 注释参数。有关完成接线的更多详细信息,请参阅Mapping the response body with the @ResponseBody annotation。
【讨论】:
创建一个 DTO 来保存所有可能的表单元素
Class MyFormData {
private String name;
private Double salary;
private List<String> hobbies;
......
}
在控制器中,使用@ResponseBody
@RequestMapping(value = "/something", method = RequestMethod.POST)
public void handle(@RequestBody MyFormData formData, Model model) {
...
}
【讨论】:
如果您的 UI 如此动态,您不妨硬着头皮选择 Javascript 解决方案。 Spring MVC 将简单地以 @RequestBody 和 @ResponseBody 的形式接收和返回 JSON,而不必担心基本的 MVC。
JSP 只能在动态 UI 行为方面为您提供到目前为止的帮助。一旦您熟悉了 JQuery 和/或 AngularJS,您将永远不会回头。
【讨论】: