Xor*_*rty 6 java validation rest spring bean-validation
/companyId/userId/ticket我们提供的机票包含assigneeId:
{"assigneeId":10}
我们需要assigneeId在URL中验证属于公司的companyId路径变量
@RequestMapping(value="/{companyId}/{userId}/ticket", method=POST)
public void createTicket(@Valid @RequestBody Ticket newTicket, @PathVariable Long companyId, @PathVariable Long userId) {
...
}
Run Code Online (Sandbox Code Playgroud)
TicketValidator)(甚至包含依赖项)并验证Ticket实例companyId给这个验证器!我们需要验证ticket.assigneeId属于公司的companyId.任何想法如何在这里实现所需的输出?
你总是可以这样做:
@Controller
public class MyController {
@Autowired
private TicketValidator ticketValidator;
@RequestMapping(value="/{companyId}/{userId}/ticket", method=POST)
public void createTicket(@RequestBody Ticket newTicket,
@PathVariable Long companyId, @PathVariable Long userId) {
ticketValidator.validate(newTicket, companyId, userId);
// do whatever
}
}
Run Code Online (Sandbox Code Playgroud)
编辑回应评论:
Ticket独立于companyId的有效性何时Ticket依赖进行验证是没有意义的companyId。
如果您无法使用上述解决方案,请考虑在 DTO 中进行分组,并更改映射,如下所示Ticket:companyId
@Controller
public class MyController {
@RequestMapping(value="/{userId}/ticket", method=POST)
public void createTicket(@Valid @RequestBody TicketDTO ticketDto,
@PathVariable Long userId) {
// do whatever
}
}
public class TicketDTO {
private Ticket ticket;
private Long companyId;
// setters & getters
}
Run Code Online (Sandbox Code Playgroud)