javascript - 发布空正文(长度为 0 的字符串)
问题描述
要将某些内容发布到服务器,我使用以下代码:
var u1 = new XMLHttpRequest();
u1.open('POST', 'java/packagename');
u1.send(''); // <- string length of 0, a valid packagename in java.
var u2 = new XMLHttpRequest();
u2.open('POST', 'java/packagename');
u2.send('a'); // <- string length of 1, also a valid package name in java.
不幸的是,没有发布长度为 0 的字符串。
解决方案
最后我自己找到了解决方案。
我将 u1 代码重写为
var h = value === null?'null':(v === ''?'empty-string':(v === undefined?'undefined':null));
if (h != null) {
u1.setRequestHeader('X-empty-body-interpret-as', h);
}
(我知道你们所有人的想法:嘿,您违反了 RFC 6648,但我现在不在乎)
在控制器中,我读到这样的标题:
@RequestMapping(value="java/packagename", method = RequestMethod.POST)
public ResponseEntity<Object> updatePackage(@RequestBody(required=false) String entityPackageNew, HttpServletRequest request) {
String interpretNullAs = request.getHeader("X-empty-body-interpret-as");
DP databaseMavenRevelation = entityManager.find(DP.class, databaseMavenRevelationId);
if (entityPackageNew == null) {
switch (interpretNullAs) {
case "empty-string":
databaseMavenRevelation.setEntityPackage("");
break;
case "null":
case "undefined":
databaseMavenRevelation.setEntityPackage(null);
break;
}
} else {
databaseMavenRevelation.setEntityPackage(entityPackageNew);
}
entityManager.persist(databaseMavenRevelation);
return new ResponseEntity<>(HttpStatus.OK);
}
推荐阅读
- vue.js - 如何在 Vue.js 中将实例化的 Vue 组件作为道具传递?
- c++ - 从左到右的反向链表
- php - 将 VB.NET 加密/解密旧代码转换为 PHP 5.3
- c# - 在 ASP.NET Core 中捕获空闲超时用户详细信息
- r - 执行匹配的风险集抽样(发病密度抽样)而不对两个变量进行替换匹配
- r - 重新格式化ggplot barplot的数据框
- terraform - 嵌套块如何在自定义 terraform 提供程序中具有标签?
- javascript - SVG 动画在 React 中引发“无法读取属性 'style' of null”错误
- realm - 领域查询有时不返回数据
- c - yocto设置的镜像包服务器无法搜索到download/git2/下的包