跳到主要内容
版本:7.0.3

@RequestParam

Hunyuan 7b 中英对照 @RequestParam @RequestParam

[参见Reactive堆栈中的等效内容](../../../webflux controller/ann-methods/requestparam.md)

你可以使用@RequestParam注解将Servlet请求参数(即查询参数或表单数据)绑定到控制器中的方法参数上。

以下示例展示了如何实现这一点:

@Controller
@RequestMapping("/pets")
public class EditPetForm {

// ...

@GetMapping
public String setupForm(@RequestParam("petId") int petId, Model model) { 1
Pet pet = this.clinic.loadPet(petId);
emodel.addAttribute("pet", pet);
return "petForm";
}

// ...

}
  • 使用 @RequestParam 来绑定 petId

默认情况下,使用此注解的方法参数是必需的,但您可以通过将@RequestParam注解的required标志设置为false,或者通过使用java.util.Optional包装器来声明参数,来指定某个方法参数是可选的。

如果目标方法参数类型不是String,则会自动应用类型转换。请参阅类型转换

将参数类型声明为数组或列表,可以允许为同一个参数名解析多个参数值。

@RequestParam注解被声明为Map<String, String>MultiValueMap<String, String>类型,并且没有在注解中指定参数名称时,那么该映射(map)将填充每个给定参数名称的请求参数值。以下示例展示了如何通过表单数据处理来实现这一功能:

@Controller
@RequestMapping("/pets")
class EditPetForm {

// ...

@PostMapping(path = "/process", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
public String processForm(@RequestParam MultiValueMap<String, String> params) {
// ...
}

// ...
}

请注意,使用@RequestParam是可选的(例如,用于设置其属性)。默认情况下,任何属于简单值类型的参数(由BeanUtils#isSimpleProperty)确定,并且没有被其他任何参数解析器解析的参数,都会被视为被@RequestParam注释过。