spring的动态表格


问题内容

我正在尝试使用Spring表单制作动态表单。基本上,该表单会获得一个学习活动的标题,然后在其下方有一个按钮,显示“添加另一个学习活动”。这使用户可以添加一个以上的学习活动。我希望他能够添加他喜欢的任何东西。

我之前没有尝试过,所以很明显我想到的第一个解决方案遇到了错误。我确实有一种做我会做的错误的感觉,但是只是开车回家我想做的事情,这是代码:

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



<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>

问题答案:

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

但是,关于如何将HTML输入绑定到Spring命令对象中的字段,没有什么神奇的。它只是基于名称。因此,在您的JavaScript中,添加一个新的
<input type="text" name="activity[1].activity"> (例如-显然,您将增加索引)。

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

编辑为可能引起问题的一个问题:您要将新的输入框附加到外部div(“文本”)的末尾,这意味着它不在form标记内。那行不通。