J'essaie de mapper l'url /locations/{locationId}/edit.html - qui semble fonctionner avec ce code:
@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";
}
}
Appelez les résultats mentionnés dans une exception:
Java.lang.IllegalArgumentException: Name for argument type [int] not available, and parameter name information not found in class file either.
Est-ce que j'utilise l'annotation @PathVariable de manière incorrecte?
Comment l'utiliser correctement?
il devrait être @PathVariable("locationId") int locationId
Vous devez ajouter l’argument value
à votre @PathVariable
, par exemple,
public String showEditForm(
@PathVariable("locationId") int locationId,
Map<String, Object> map) {
// ...
}
Le paramètre nomutilisateur exposition est disponible dans JDK7, sinon vous devez le définir dans l'annotation.
Vous devez utiliser l'exposition JDK avant de l'utiliser explicitement (comme Johan et Moniul l'ont suggéré) dans le cadre de l'annotation, car si vous souhaitez modifier la clé de paramètre, vous devez éditer uniquement le nom de la variable et pas toute autre occurrence dans les spécifications d'annotation dans d'autres lignes et/ou classes. Appelons cela une source unique de vérité.