为什么在Spring mvc中验证失败后,字段中缺少字段(type = file)值

时间:2014-01-20 13:02:33

标签: jsp spring-mvc

我有一个浏览按钮和一个文本框。当我们浏览文件并在文本框中给出一些值时,它就可以了。但是当我们离开浏览文件或填写文本框时,它会要求验证说必须分别上传文件或文本框。但在这里我的问题是,当我上传文件并离开文本框然后如果我去验证然后它将文本框填充一些值,但同样在浏览按钮上传的文件路径也在验证失败后丢失像这样。 这是我的代码:

<form:form id="command" method="POST" enctype="multipart/form-data"
                commandName="project" modelAttribute="project"
                action="onsubmit.htm">
<c:forEach var="ivrsFile" items="${project.ivrsFiles}"
                            varStatus="status">
                            <tr class="filerowclass">

                                <c:if test="${fn:length(ivrsFile.fileName) > 0}">
                                    <td width='265px' class="browsebutton1"><span
                                        class="browse-text">File <c:out
                                                value="${status.index+1}"></c:out>:
                                    </span> <form:hidden path="ivrsFiles[${status.index}].fileID" /> <span
                                        class="browselist-item" style="display: none"> <input
                                            style="display: none" type="file"
                                            name="ivrsFiles[${status.index}].file" /> <span
                                            class="description"> <form:input
                                                    path="ivrsFiles[${status.index}].fileName" readonly="true" /></span></span>
                                    </td>
                                    <td>Description: <form:input
                                            path="ivrsFiles[${status.index}].fileDescription" />
                                    </td>
                                    <td valign='middle'><a href="#" class='delete-file'>Delete
                                            file</a></td>

                                </c:if>

任何人都可以告诉我如何在浏览文本框中保留我的值,即使旁边的文本框验证失败也是如此。 提前谢谢

1 个答案:

答案 0 :(得分:1)

您无法为上传设置值(即<input type="file" />)。这是(安全)feature by design of HTML。如果要保留上传的文件,则必须将其存储在会话中,并重新设计控制器以使用会话中先前存储的文件。