簡體   English   中英

如何強制Spring DATA REST @PathVariable實體存在

[英]How can I force Spring DATA REST @PathVariable entity exists

對於注入@PathVariable實體,我的意思是

@RequestMapping(method = RequestMethod.PUT, path = "{project-id}")
@Transactional
@PreAuthorize("#user.id == #project.userId")
public Object update(@P("user") @Current User user,
                     @P("project") @PathVariable Project entity,
                     @RequestBody @Valid ProjectPost request) {
    setProjectPostToEntity(entity, request);

    return ResponseEntity.ok(ImmutableMap.of("message", "Project update successful"));
}

但是,如果在存儲庫中找不到project-id@PathVariable Project entity將為null,我想要的是這樣的東西

@RequestMapping(method = RequestMethod.PUT, path = "{project-id}")
@Transactional
@PreAuthorize("#user.id == #project.userId")
public Object update(@P("user") @Current User user,
                     @P("project") @PathVariable @Valid @NotNull(message="Update project not exists") Project entity,
                     @RequestBody @Valid ProjectPost request) {
    setProjectPostToEntity(entity, request);

    return ResponseEntity.ok(ImmutableMap.of("message", "Project update successful"));
}

如果未在存儲庫中找到project-id ,則會返回一條消息: Update project not exists ,但@Valid @NotNull(message="Update project not exists")在這里不起作用,我該怎么做?

使用setProjectPostToEntity(entity, request)方法創建服務,並使用@Transactional@PreAuthorize對其進行注釋。 這種方法確保您的變量將存在。 關於控制器方法上的@Transactionalhttps//stackoverflow.com/a/23120647/5649869

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM