我有一个代码块,我动态添加
以下是我正在使用的代码 -
<form:form role="form" method="post" id="addForm" action="/data/SomeAction" modelAttribute="someModel">
<div id="rowCabin1">
<div id="rowCabinData1">
<div class="row" id="cabinRow1">
<div class="col-xs-12 col-sm-12 col-md-6 col-lg-6">
<div class="form-group">
<form:input path="test" placeholder="Name" class="form-control" style="width:100%" />
</div>
</div>
</div>
</div>
</div>
</form:form>
以下是javascript。
$().ready(function() {
var i=2;
$("#addRowCabin").click(function(){
$('#rowCabin1').append('<div id="rowCabinData'+i+'"><div class="row" id="cabinRow1"><div class="col-xs-12 col-sm-12 col-md-6 col-lg-6"><div class="form-group"><form:input path="test" placeholder="Name" class="form-control" style="width:100%" /></div></div></div></div>');
i++;
});
$("#delRowCabin").click(function(){
if(i>2){
$("#rowCabinData"+(i-1)).remove();
i--;
}
});
});
现在尝试加载页面时
ERROR: org.springframework.web.servlet.tags.form.InputTag - Neither BindingResult nor plain target object for bean name 'test' available as request attribute
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'test' available as request attribute
at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:144)
我的直觉是,这是因为形式:输入不是表单的一部分:表单标签本身。但由于我在表格标签中添加,情况应该不是这样。
请建议。
AJ
答案 0 :(得分:2)
<form:input>
是jsp标记,在服务器上的请求处理期间进行评估。你不能用javascript添加它。如果你的javascript是JSP的一部分,那么这就是它在加载时失败的原因。
而是查看生成的HTML,现有输入ID和名称的外观如何,并附加原始HTML输入标记。
或者更好地在JSP中使用c:forEach周围的字段集合,并通过AJAX请求添加新的动态字段。
关于绑定集合的好文章在这里:http://viralpatel.net/blogs/spring-mvc-multi-row-submit-java-list/