【问题标题】:How to receive dynamically generated input value in spring as bean如何在spring中作为bean接收动态生成的输入值
【发布时间】:2014-12-27 10:03:40
【问题描述】:

在我的项目中,我在如下表中动态生成文本框

project Name Date1 Date2 Date3 Date4 Date5 Activity 
java                                        Development Addnew
C++                                         Development Addnew 

我会显示一周的表格。如果用户单击 addnew,我会在用户单击 addnew 按钮的行下方生成动态文本框。

我的问题是如何将我的 spring 控制器中的所有文本框值作为 bean 类获取。因为我不确定页面加载和提交中有多少文本框。

任何想法将不胜感激!!!

【问题讨论】:

  • 您当前的弹簧控制器是什么样的?还有你使用的是什么前端堆栈(如果有的话),jQuery,角度等?
  • 我的前端堆栈是 jquery。我很困惑如何在控制器中接收此请求
  • 表单上是否有一个大的提交按钮,或者您希望后端在用户按下“添加新”时在任何数据库中添加一行
  • 提交一个数组并在你的spring控制器中使用一个列表,例如stackoverflow.com/questions/5399347/…
  • @Adam,如果用户每周在一个项目中执行一项或多项活动,他会单击为每个活动添加新的日志时间。我在 jquery 中生成该文本框而不是 bd 级别

标签: java html spring spring-mvc


【解决方案1】:

您的问题中没有足够的细节来提供具体的答案。但是,我会推荐一般方法。

  • 如果您有像 Backbone 或 Angular 这样的框架,请研究其收集工具的使用情况。
  • 编写从所有文本字段构建 JSON 数组的 JavaScript
  • 在 Java 中定义一个 POJO,以反映数组中的每个条目。
  • 确保您使用的是 Jackson - 这会在调用控制器之前将 JSON 映射到 Java 对象
  • 在控制器中定义一个方法,该方法采用 POJO 列表,例如使用 PUT 使用 /times/{employeeId} 之类的 URL 创建(列出值)
  • 要读取数据库,请在控制器中添加返回 POJO 列表的方法,例如使用 GET 列出带有 /times/{employeeId} 之类的 URL 的值 get(long employeeId)
  • 或者,如果您需要表单处于“实时”状态,即“添加新”会导致数据库中的行立即使用 REST 接口,并分别使用 POST、PUT 和 DELETE 进行创建、更新和删除

我假设您稍后需要更新列表,所以我推荐一个具有可用于 CREATE 和 UPDATE 操作的 ID 的结构,而不仅仅是一个简单的字符串列表,这也将允许稍后更多字段.

public void Foo {
  private String project;
  private String name;
  private long id;
  // getters + setters
}

用于创建的 JSON

[{"project":"java","name":"Development",id:0}, {"project":"C++","name":"Development",id:0}]

JSON 用于以后的更新,即 ID 往返

[{"project":"java","name":"Development",id:100}, {"project":"C++","name":"Development",id:101}]

【讨论】:

  • ,根据我的要求,单个项目包含更多活动,例如项目:java 活动:设计项目:java 活动:development.so 如何在控制器中识别此标准
【解决方案2】:

使用传统的getParameter() 方法。我假设您的文本框在使用 jquery 生成时将具有唯一名称。

在控制器中,

   List<String> requestParameterNames = Collections.list((Enumeration<String>) request.getParameterNames());

for (String parameterName : requestParameterNames) {
    String attributeName = parameterName;
    String attributeValue = request.getParameter(parameterName);
    // will have the text box values 

}

【讨论】:

  • 我在加载时使用 jstl 生成文本框,并在用户单击 add new 时动态生成文本框。我如何关联这个名称是这个项目,因为根据我的要求,一个项目可能需要两行或更多行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-29
  • 1970-01-01
相关资源
最近更新 更多