我正在使用tiles,Spring MVC,Spring form标签。我想逐步制作一个表格。单击按钮时,显示来自其他切片定义的更多输入。但抛出异常却找不到“BindingResult既不是bean名称也不是普通目标对象”,看起来“更多输入”无法从以前的请求中获取bindle对象,是不是?
源代码:
<form:form action="/saveTicker.do" commandName="ticker" modelAttribute="ticker" method="post">
...
<form:input path="name" id="name"/>
<a href="#" class="btn" onclick="confirmTicker();">Confirm</a>
<div class="row" id="filelist">
</div>
</form>
js
var confirmTicker=function(){
var ticker=$('input:text').val();
$.get("/confirmTicker.do",{ticker:ticker}).success(function(data){
$('#filelist').html(data);
});
}
想要导入另一个文件
<table class="table ">
<c:forEach var="f" items="${fileList}">
<tr>
<td>
<form:checkbox path="files" value="${f}"></form:checkbox>
</td>
</tr>
</c:forEach>
</table>
错误是
Neither BindingResult nor plain target object for bean name 'files' available as request attribute
答案 0 :(得分:0)
如果我读的是正确的,你想要的是一个“向导”形式,用户通过一系列步骤从一个表单传递到另一个表单。首先,我相信Spring Web Flow开箱即用,但是,如果像我一样,你不能使用Spring Web Flow,你可以手动完成。
首先,您需要一个Form Bean(读取Command对象),它具有来自所有表单的所有可能输入。
接下来,您将拥有一个接受Form Bean的Controller方法并返回正确的步骤(这就是我所做的),或者您可以使用多种方法......这没关系。您将在处理程序方法上使用@ModelAttribute批注将Form Bean绑定到视图窗体。此外,在控制器顶部的@SessionAttributes注释将表单Bean设置为会话属性。确保@ModelAttribute,@ SessionAttribute和视图的名称都对应于相同的属性名称。
最后,创建多个视图,每个视图都相同,但每个视图只包含您希望在此时在FormBean上设置的部分。你不能使用JSR 303,或者至少我不知道你怎么做,因为你不能在步骤之间完成验证。您必须自己完成验证。