Spring中的动态表单
-
10-07-2019 - |
题
我正在尝试使用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>
解决方案
您不能在javascript中使用<!> lt; form:input>
,因为它是在服务器端运行的jsp标记。
然而,HTML输入如何绑定到Spring命令对象中的字段并没有什么神奇之处。它只是基于名称。所以在你的javascript中添加一个新的
<input type="text" name="activity[1].activity">
(例如 - 显然你会增加索引)。
我用于更复杂控件的另一个选项是获取现有控件的HTML(使用Spring form:input标签创建)并克隆它,用递增的数字替换索引。如果你使用jQuery,这会变得容易很多。
已编辑添加: 一个可能导致问题的问题:您将新的输入框附加到外部div的末尾(<!> quot; text <!> quot;),这意味着它不在表单标记内。那不行。
其他提示
是<form:input>
JSP标记吗?如果是这样,那么客户端Javascript将<input>
节点添加到DOM将不起作用 - 因为服务器端JSP引擎没有解释它们。
您的Javascript需要使用原始HTML和DOM,例如添加<=>元素。
不隶属于 StackOverflow