当前位置: 首页 > 知识库问答 >
问题:

如何确定Spring控制器的参数?

闾丘英悟
2023-03-14

我看到了带有各种参数的Spring MVC控制器处理程序方法。例如:

    null

所以,

  • 什么决定参数列表?
  • 为什么Spring controller处理程序方法没有固定签名?
  • Spring如何处理这些变化的参数列表?
  • 是否可以输入任意类型的参数?

共有1个答案

赫连正初
2023-03-14

Spring控制器方法签名非常灵活,支持多个参数。它们列在文档中。

关于您的第二个问题,没有固定的签名正是出于在编写控制器方法时提供灵活性的原因。

使用HandlerMethodArgumentResolver接口的实现解析各个参数。例如,如果您的参数带有@PathVariable参数注释,则其值将由PathVariableMethodArgumentResolver解析。

从历史上看,在Spring中曾经有过具有固定签名的控制器。例如,它们将实现abstractCommandController接口。该控制器将实现以下方法:

ModelAndView handle(HttpServletRequest request, HttpServletResponse response,
        Object command, BindException errors)

然而,从那时起Spring发生了变化,这种方法在Spring3中被弃用,转而使用基于注释的控制器。

 类似资料:
  • 给出了一种Spring-MVC控制器的方法: 如果请求URL中缺少参数,则报告一个错误,例如: JBWeb000068:message Required int参数“param1”不存在 如果省略,则可以执行此操作,但问题是,如果缺少参数,则不会报告任何错误。另一方面,如果包含,则在GET请求中需要一个名为“model”的参数。有没有一种方法可以使模型参数成为强制性的,同时保持相同的请求URL?

  • 问题内容: 我有 我以这种方式传递profileJson: 但是我的profileJson对象具有所有空字段。我应该怎么做才能使spring解析我的json? 问题答案: 这可以通过自定义编辑器完成,该编辑器将JSON转换为UserProfile对象: 这是为了在控制器类中注册编辑器: 这是使用编辑器解组JSONP参数的方法:

  • 我试图将一个参数传递给我的@RESTController-Spring Boot类。 在@POSTMapping方法中,我想使用自定义Java类的方法来处理接收到的正文并返回响应。 Spring应用程序在应用程序中启动。Java语言控制器对象似乎是隐式创建的。 我已经尝试将构造函数添加到我的RESTController类中。但是我找不到用参数调用该构造函数的方法。 尽管我可以定义第二个构造函数,但

  • 我有一个简单的Spring控制器。 当我在查询字符串中传递a=1时,它工作正常。 但是当我通过a=abc时,它给了我这个。 有没有办法让我可以处理这个错误并回复给用户,就像必须是数字一样。 提前感谢。

  • 我正在开发一个使用Spring Boot的项目。我有一个接受GET请求的控制器。 目前,我正在接受对以下类型URL的请求:

  • 我有一个POJO类患者,具有以下特征: 现在从我的Rest控制器中,我只需要在json中发送患者的姓名、电话号码、电子邮件和地址。我希望json输出为 此处仅将检查成功/失败添加为标志。