@RequestBody
を使用しない場合、@PathVariable
id
は自動的にEntity
クラスに設定されます。しかし、もし私が@RequestBody
を使っていれば、そうではありません。私のGenericValidator
が検証を実行する前に、id
がEntity
に設定されている必要があります。なぜそれが@RequestBody
なしで動作するのですか?@PathVariableが@RequestBodyとバインドしていません
Entityクラス:
public class Entity {
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
//...
}
コントローラクラス:単独で使用する場合
@Controller
@RequestMapping(value = "/entity")
public class EntityController {
@Autowired
private GenericValidator validator;
@InitBinder
private void initBinder(WebDataBinder binder) {
binder.addValidators(validator);
}
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
public @ResponseBody Response update(
@PathVariable String id,
@Valid @RequestBody Entity entity)
{
//...
}
}
@RequestBodyでこの作業を行う方法はありませんか? – dblank