12 Mayıs 2019 Pazar

SpringMVC @RequestParam Anotasyonu - URL'deki Parametreler İçindir

Giriş
URL'deki ? karakterinden sonra gelen parametrelerin koddaki değişkenlere bağlanmasını sağlar. Açıklaması şöyle.
You can use the @RequestParam annotation to bind Servlet request parameters (that is, query parameters or form data) to a method argument in a controller.
Örnek
URL şöyle olsun
http://localhost:8080/calculation/pow?base=2&ext=4
Şöyle yaparız.
@RequestMapping(value="/pow", method=RequestMethod.GET)
public int pow(@RequestParam(value="base") int base1,alo
               @RequestParam(value="ext") int ext1){
  ...
}
Örnek
Tek tek parametreler yerine her şeyi bir nesneye de bağlayabiliriz. Şöyle yaparız
/v1/customers?cities=Sioux Falls-SD,Chicago-IL

@Data
@AllArgsConstructor
@NoArgsConstructor
public class CityStateRequestParamDTO {

  private String city;

  private String state;

}
Örnek - Form ile Get
Elimizde şöyle bir form olsun. Burada HTML form tag'ine method tanımlanmıyor. Form varsayılan değer olarak GET isteği gönderdiği için parametreler URL'ye eklenir.
<form action="/list">
  <select name="tableName">
    <option value="employees">Employees</option>
    <option value="contracts">Contracts</option>
  </select>
  <input type="submit" value="Submit" />
</form>
Şöyle yaparız.
@RequestMapping(value = "/list", method = RequestMethod.GET)
public String getTables(Model m, @RequestParam("tableName") String tableName) {
  //findAll here
  return "home";
}
required seçeneği
Şöyle yaparız.
@RequestMapping(value = "/test", method = RequestMethod.POST)
public void test(@RequestParam(required= false) String fromDate,
                 @RequestParam(required= false) String toDate) {
}

Hiç yorum yok:

Yorum Gönder