简体   繁体   English

如何在spring @RestController Servlet中设置获取查询参数名称?

[英]How to set get query parameter name in spring @RestController Servlet?

I have a simple @RestController and want to create a request object that holds any values from a GET query. 我有一个简单的@RestController并且想要创建一个包含GET查询中任何值的请求对象。

Moreover I'd like to use variable names being different from the get query parameter names. 此外,我想使用与get查询参数名称不同的变量名称。

@RestController
public class MyServlet {
    @RequestMapping(value = "/start")
    public String start(@Valid MyRequest req) {
                Logger.log("IN");
        return req.getTest();
    }
}

public class MyRequest {
    @XmlElement(name = "asd")
    private String test;

    //getter, setter
}

Request: localhost:8080/start?asd=imhere 请求: localhost:8080/start?asd=imhere

Result: I'm seing the log statement IN , so the servlet works. 结果:我正在查看日志语句IN ,因此servlet正常工作。 BUT req Parameter is null. 但是req参数为空。 Why? 为什么?

It works if I send the following url: localhost:8080/start?test=imhere So the servlet works, but not the parameter renaming. 如果我发送以下url它是有效的: localhost:8080/start?test=imhere所以servlet工作,但不是参数重命名。

Spring will try to build your MyRequest object using setters or reflecting into private variables, therefore the test variable will only be populated when you send a test parameter. Spring将尝试使用setter构建您的MyRequest对象或反映私有变量,因此只有在发送test参数时才会填充test变量。

From the documentation (@RequestMapping - Supported method argument types) : 文档(@RequestMapping - 支持的方法参数类型)

Command or form objects to bind request parameters to bean properties (via setters) or directly to fields... 命令或表单对象将请求参数绑定到bean属性(通过setter)或直接绑定到字段...

Edit - If you want to change names you'll likely need a Converter. 编辑 - 如果您想更改名称,您可能需要转换器。 See: 看到:

  1. docs 文档
  2. mvc example mvc的例子

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在Spring控制器中获取调度程序Servlet名称 - How to get dispatcher servlet name in Spring controller 如何检查Spring RestController的未知查询参数? - How to check spring RestController for unknown query params? 通过@RequestParam Spring @RestController 解码 url 查询参数时遇到问题 - Having a trouble with decoding a url query parameter by @RequestParam Spring @RestController 如何在 Spring Boot RestController 中获取请求 URL - How to get request URL in Spring Boot RestController Spring Boot-如何在Spring RestController中的映射中获取所有请求参数? - Spring Boot - How to get all request params in a map in Spring RestController? 如何在 Spring Boot RestController 中映射动态查询参数 - How to map dynamic query parameters in Spring Boot RestController Spring如何仅通过形式参数名匹配查询参数? - How can Spring match query parameter only by formal parameter name? 如何使用Vaadin在Spring中获取查询参数? - How to get Query Parameter in Spring with Vaadin? 如何在servlet中获取参数的值? - How to get the value of parameter in servlet? 如何从ConstraintViolationException获取查询参数名称 - How to get query parameter name from ConstraintViolationException
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM