【发布时间】:2017-11-01 07:58:45
【问题描述】:
我有一个 springboot 应用程序,可以编辑非常大的配置文件(大约 40k 行)。应用程序的一部分处理在 .js 文本编辑器中直接编辑文件。但是,在那里所做的更改无法单独跟踪并上传到后端,这意味着我必须为每次更改更新整个配置。
现在在测试阶段,我真的很天真地只是通过 html 表单将整个内容作为字符串发送,因为我们只处理小文件。现在文件变大了,导致后端控制器方法中的 String 参数为Null。
HTML代码:
<form action="/someUrl" method="post">
<input type="hidden" id="editorText" name="editorText" />
<input class="btn btn-success btn-lg" style="margin-top: 15px;" type="submit" th:value="#{mSave}"/>
</form>
现在我的问题是如何通过 html 将大量文本可靠地发送到 spring 控制器? 如果有任何帮助,我正在使用QuillJS 文本编辑器。提交的输入会随着每次更改而更新,如下所示:
document.getElementById("editor").value = quill.getText();
而后端的spring控制器是这样的:
@RequestMapping(value="/someUrl", method = RequestMethod.POST)
public String changeInEditor(Model model, RedirectAttributes redirectAttributes, @RequestParam("editorText") String editorText) {
//editorText is Null
//...
}
非常感谢任何提示/帮助!
编辑 1:添加了 @RequestParam 和 RequestMethod
【问题讨论】:
-
是的,它仍然适用于较小的文件。这会导致
org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'editorText' is not present异常。我认为问题在于控制器想要在传输成功之前访问参数还是不可能? -
是的,我的命名是正确的,
@RequestParam和输入标签都称为editorText。但也有了新的控制器签名,它引发了上述异常。 (上述问题中的编辑签名) -
那我不知道。最后想一想,将您的 getElementId 设置为
.getElementById("editorText") -
遗憾的是这也不是问题,现在检查了两次命名,它仍然适用于较小的文件。不过感谢您的帮助!
-
由于您在控制器方法中使用
@RequestParam("editorText"),那么您应该在DOM 或表单中拥有一个名为editorText的输入类型属性。小文件又是什么意思?这只是一个文本字段[not a file/multipart type]。您要发送多少文本,这应该不是发布请求的问题。
标签: javascript java spring spring-boot