@RequestParam
@RequestParam
アノテーションを使用して、クエリパラメーターをコントローラーのメソッド引数にバインドできます。次のコードスニペットは使用方法を示しています。
Java
Kotlin
@Controller
@RequestMapping("/pets")
public class EditPetForm {
// ...
@GetMapping
public String setupForm(@RequestParam("petId") int petId, Model model) { (1)
Pet pet = this.clinic.loadPet(petId);
model.addAttribute("pet", pet);
return "petForm";
}
// ...
}
1 | @RequestParam を使用します。 |
import org.springframework.ui.set
@Controller
@RequestMapping("/pets")
class EditPetForm {
// ...
@GetMapping
fun setupForm(@RequestParam("petId") petId: Int, model: Model): String { (1)
val pet = clinic.loadPet(petId)
model["pet"] = pet
return "petForm"
}
// ...
}
1 | @RequestParam を使用します。 |
サーブレット API の「リクエストパラメーター」の概念は、クエリパラメーター、フォームデータ、マルチパートを 1 つに統合します。ただし、WebFlux では、ServerWebExchange を通じてそれぞれに個別にアクセスします。@RequestParam はクエリパラメーターのみにバインドしますが、データバインディングを使用してクエリパラメーター、フォームデータ、マルチパートをコマンドオブジェクトに適用することができます。 |
@RequestParam
アノテーションを使用するメソッドパラメーターはデフォルトで必須ですが、@RequestParam
の必須フラグを false
に設定するか、java.util.Optional
ラッパーで引数を宣言することにより、メソッドパラメーターがオプションであることを指定できます。
ターゲットメソッドのパラメーター型が String
でない場合、型変換が自動的に適用されます。型変換を参照してください。
@RequestParam
アノテーションが Map<String, String>
または MultiValueMap<String, String>
引数で宣言されると、マップにはすべてのクエリパラメーターが入力されます。
@RequestParam
の使用はオプションであることに注意してください。たとえば、その属性を設定するためです。デフォルトでは、(BeanUtils#isSimpleProperty (Javadoc) によって決定される)単純な値型であり、他の引数リゾルバーによって解決されない引数は、@RequestParam
でアノテーションが付けられているかのように扱われます。