0

我正在使用瓷砖、Spring MVC、Spring 表单标签。我想一步一步地制作一个表格。单击按钮时,显示来自另一个图块定义的更多输入。但是抛出异常找不到“既不是BindingResult也不是bean名称的普通目标对象”,看起来“更多输入”无法从先前的请求中获取绑定对象,对吗?

源代码:

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

1 回答 1

0

如果我没看错,那么您想要的是一个“向导”表单,其中用户通过一系列步骤从一个表单传递到下一个表单。首先,我相信 Spring Web Flow 是开箱即用的,但是,如果像我一样,您不能使用 Spring Web Flow,您可以手动执行此操作。

首先,您需要一个 Form Bean(读取 Command 对象),它具有来自所有表单的所有可能输入。

接下来,您将拥有一个接受 Form Bean 并返回正确步骤的 Controller 方法(这就是我所做的),或者您可以拥有多个方法……没关系。您将在处理程序方法上使用 @ModelAttribute 注释将 Form Bean 绑定到视图表单。此外,控制器顶部的 @SessionAttributes 注释将 Form Bean 设置为会话属性。确保@ModelAttribute、@SessionAttribute 和视图的名称都对应相同的属性名称。

最后,创建多个视图,每个视图都具有相同的 ,但每个视图都只包含您要在该点在 FormBean 上设置的部分。您不能使用 JSR 303,或者至少我不知道如何使用,因为您无法在步骤之间进行验证。您将不得不自己处理最后的验证。

于 2013-02-18T16:06:38.483 回答