Khi tôi không sử dụng @RequestBody
, @PathVariable
id
được tự động đặt ở lớp Entity
của tôi. Nhưng nếu tôi sử dụng @RequestBody
thì không. Tôi cần rằng id
của Entity
được đặt trước khi GenericValidator
thực thi xác thực của tôi. Tại sao nó hoạt động mà không có @RequestBody
và không có nó?@PathVariable không ràng buộc với @RequestBody
Entity lớp:
public class Entity {
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
//...
}
Bộ điều khiển lớp:
@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)
{
//...
}
}
vì vậy không có cách nào để thực hiện công việc này với @RequestBody? – dblank