Spring中的动态表单

Jeu*_*une 7 javascript java spring spring-mvc

我正在尝试使用Spring表单创建一个动态表单.基本上,表单获得学习活动的标题,然后在它下面的按钮上写着"再添加一个学习活动".这使得用户可以再添加一个学习活动.我希望他能够尽可能多地添加.

我之前没有尝试过,所以很明显我遇到了我想到的第一个解决方案的错误.我真的有一种感觉做我所做的会产生错误,但只是开车回家我想做什么,这里是代码:

<script language="javascript">
 fields = 0;
 function addInput() {
      document.getElementById('text').innerHTML += "<form:input path='activity[fields++].activity'/><br />";
 }
Run Code Online (Sandbox Code Playgroud)

<div id="text">
  <form:form commandName="course">
   Learning Activity 1 
   <form:input path="activity[0].activity"/>
    <input type="button" value="add activity" onclick="addInput()"/>
    <br/><br/>
   <input type="submit"/>
  </form:form>  
  <br/><br/>
 </div>
Run Code Online (Sandbox Code Playgroud)

Jac*_*son 8

您不能form:input>在javascript中使用< ,因为它是在服务器端运行的jsp标记.

然而,关于HTML输入如何绑定到Spring命令对象中的字段并没有什么神奇之处.它只是基于名称.所以在你的javascript中添加一个新的 <input type="text" name="activity[1].activity"> (例如 - 显然你会增加索引).

我用于更复杂控件的另一个选项是获取现有控件的HTML(使用Spring form:input标签创建)并克隆它,用增加的数字替换索引.如果你使用jQuery,这会变得容易多了.

编辑添加:可能导致问题的一个问题:您将新输入框附加到外部div("text")的末尾,这意味着它不在表单标记内.那不行.