0

我正在开发一个简单的 Spring Web 应用程序来管理 PDF 格式的文档,它应该能够执行通常的操作:列出它们,添加一个新的,删除和更新。这些操作转到 MS SQL Server 数据库(文档表有一个 VARBINARY(MAX) 字段来存储文档的字节)。更新(以前添加的)文件时出现问题。添加文件很容易。JSP 中的简化形式是这样的:

<form:form method="post" action="AddDoc" commandName="document" enctype="multipart/form-data">
            <table id="documentTable">
                <tr>
                    <td>
                        <p>Choose file:</p>
                    </td>
                    <td>
                        <p><input type="file" name="file" path="file" size="40" value="${document.file}"></p>
                        <p><sf:errors path="file" class="error"/></p>
                    </td>
                </tr>
<tr>
                    <td colspan="2">
                        <p class="submit"><input id="submitForm" type="submit" name="commit" value="Go"></p>
                    </td>
                </tr>
</table>
        </form:form>

如您所见,表单在提交时会发送一个 Document 对象,该对象由控制器验证并插入到数据库中。此 Document 对象在插入之前将文档的字节存储到 MultipartFile 中。现在我想更新这个 Document 对象,所以 JSP 页面与添加的页面相同,不同之处在于必须在显示页面之前从 DB 加载已经存在的 Document。表单现在填充了文档信息,除了输入文件字段,我不知道为什么没有填充(虽然你可以看到value="${document.file}")。问题是用户可能不需要更新文件本身,只需要更新表单上出现的其他关联属性,但是当提交时,所有字段都正确封装在 Document 对象中,除了文件为空并导致验证失败。我希望能够在加载更新文档 JSP 页面时填充文件输入字段,因此如果用户提交表单而不更改此字段,则可以再次发送信息。

我考虑过其他解决方案,例如修改验证器以接受空文件字段,然后再次从数据库或会话中获取信息,但这看起来并不整洁。

你认为什么是好的方法?

4

0 回答 0