私は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アノテーションを間違って使用していますか?
正しく使用する方法は?
@PathVariable("locationId") int locationId
である必要があります
value
引数を @PathVariable
に追加する必要があります。たとえば、
public String showEditForm(
@PathVariable("locationId") int locationId,
Map<String, Object> map) {
// ...
}
パラメータ名の説明はJDK7で使用できます。それ以外の場合は、注釈で設定する必要があります。
アノテーションの一部として明示的に使用する前に(JohanやMoniulが推奨するように)JDK博覧会を使用する必要があります。パラメーターキーを変更したい場合は、変数名のみを編集し、アノテーション仕様の他のオカレンスを編集する必要はないためです。他の行やクラスで。それを単一の情報源と呼ぼう。