发布空正文(长度为 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);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章