0

我有一个像下面这样的弹簧启动代码,它处理一个特定的映射,如下所示 -

@RestController
@ResponseBody
public class SomeAPIController {

    @RequestMapping(
            value = "/some-api",
            method = RequestMethod.GET,
            produces = {"application/json", "application/xml"}
    )

    @ResponseStatus(HttpStatus.OK)
    @ResponseBody
    public SomeAPIPayload validateAPIUpdate(
            @Valid @RequestParam(value = "query", defaultValue="") String queryString

    )

但是在上面的代码中,如果我通过查询,因为"something"它工作正常,但是如果我通过说,"#something"它无法查询(我通过打印queryString值验证它,结果是空的)所以,据我所知@Valid(从 导入javax.validation)正在做一些验证,不让"#something"通过。我想知道如何追踪验证文件,或者如果其他错误如何找到它?任何方向的指示都会非常有帮助。

谢谢。

4

2 回答 2

1

散列 ( #) 后面的所有内容都被解释为锚点/片段,并且不会按照 RFC 1738 中的规定发送到服务器。要发送散列符号,您需要将其编码为%23.

于 2018-02-04T07:05:17.433 回答
1

#inURL代表片段标识符。因此,如果您的查询是,http://example.com?query=#something则该#something部分被视为片段标识符并且query参数为空。

于 2018-02-04T07:07:09.917 回答