PathVariable в Spring Controller - PullRequest
       29

PathVariable в Spring Controller

23 голосов
/ 31 января 2012

Я пытаюсь отобразить url /locations/ averagelocationId‹/edit.html - похоже, работает с этим кодом:

@Controller
@RequestMapping( "/locations" )
public class LocationController
{
  @RequestMapping( value = "/{locationId}/edit.html", method = RequestMethod.GET )
  public String showEditForm( Map<String, Object> map, @PathVariable int locationId )
  {
    map.put( "locationId", locationId );
    return "locationform";
  }
}

Вызовите упомянутые результаты URL в исключении:

java.lang.IllegalArgumentException: Name for argument type [int] not available, and parameter name information not found in class file either.

Я неправильно использую аннотацию @PathVariable?

Как правильно его использовать?

Ответы [ 3 ]

36 голосов
/ 31 января 2012

должно быть @PathVariable("locationId") int locationId

16 голосов
/ 31 января 2012

Вы должны добавить аргумент value к вашему @PathVariable, например,

 public String showEditForm(
       @PathVariable("locationId") int locationId,
       Map<String, Object> map) {
    // ...
 }
0 голосов
/ 09 мая 2018

JDK 7 включает интроспекцию параметра

Экспозиция Parametername доступна в JDK7, в противном случае вы должны установить ее в аннотации.

Вы должны использовать JDK-экспозицию, прежде чем явно использовать ее (как предложили Йохан и Моньюл) как часть аннотации, потому что если вы хотите изменить ключ параметра, вам нужно редактировать только имя переменной, а не любые другие вхождения в спецификации-аннотации в других строках и / или классах. Давайте назовем это «единственным источником правды».

...