web-dev-qa-db-ja.com

Spring ControllerのPathVariable

私はURL /locations/{locationId}/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アノテーションを間違って使用していますか?

正しく使用する方法は?

24
dtrunk

@PathVariable("locationId") int locationIdである必要があります

37
Moinul Hossain

value引数を @PathVariable に追加する必要があります。たとえば、

 public String showEditForm(
       @PathVariable("locationId") int locationId,
       Map<String, Object> map) {
    // ...
 }
16
Johan Sjöberg

JDK 7はパラメーター名のイントロスペクションを有効にします

パラメータ名の説明はJDK7で使用できます。それ以外の場合は、注釈で設定する必要があります。

アノテーションの一部として明示的に使用する前に(JohanやMoniulが推奨するように)JDK博覧会を使用する必要があります。パラメーターキーを変更したい場合は、変数名のみを編集し、アノテーション仕様の他のオカレンスを編集する必要はないためです。他の行やクラスで。それを単一の情報源と呼ぼう。

0
Peter Rader