我有以下代码:
userService.getUserWithAuthorityByLogin(principal.getName())
.map(user->userRepository.findAllByClient(user.getClient().getId()));
方法findAllByClient返回List<User>
类型。
map方法返回Optional<Object>
在我的情况下,它可以(可选)返回Optional<List<User>>
。
我想编码的想法是在此可选列表上使用流。
我想把我的电话联系起来。 java 8样式的代码外观漂亮,代码行少。
如果它真的存在(现在),我需要处理这个List<User>
。如何使用java8 api链接我的调用:我希望混合Optional和Stream。
感谢。
编辑:
我继续说道:
userService.getUserWithAuthorityByLogin(principal.getName())
.map(user->userRepository.findAllByClient(user.getClient().getId()).stream().forEach(user->
{
managedUserDTOs.add(new ManagedUserDTO(user));
}));
你已经完成了整个过程。但是这不能在指令
上编译managedUserDTOs.add(new ManagedUserDTO(user))
我想填写清单并在最后回复。
EDIT2:
整个包装方法:
/**
* GET /users -> get all users.
*/
@RequestMapping(value = "/user-liste",
method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
@Timed
@Transactional(readOnly = true)
@Secured({AuthoritiesConstants.TC_ADMIN})
public ResponseEntity<List<ManagedUserDTO>> getUserListe(Principal principal)
throws URISyntaxException {
return new ResponseEntity<>(managedUserDTOs, HttpStatus.OK);
}
答案 0 :(得分:0)
这里是答案但不是JAVA8。 我想要Java8答案:
/**
* GET /users -> get all users.
*/
@RequestMapping(value = "/user-liste",
method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
@Timed
@Transactional(readOnly = true)
@Secured({AuthoritiesConstants.TC_ADMIN})
public ResponseEntity<List<ManagedUserDTO>> getUserListe(Principal principal)
throws URISyntaxException {
Optional<User> ouser = userService.getUserWithAuthorityByLogin(principal.getName());
List<ManagedUserDTO> managedUserDTOs = new ArrayList<>();
if (ouser.isPresent())
{
List<User> userListe = userRepository.findAllByClient(ouser.get().getClient().getId());
for (User user : userListe)
{
managedUserDTOs.add(new ManagedUserDTO(user));
}
}
return new ResponseEntity<>(managedUserDTOs, HttpStatus.OK);
}
答案 1 :(得分:0)
你可以尝试:
var Greeter = function () {}
Greeter.prototype.greet = function () { };
与评论部分中的相同,但我认为这有一些编码问题。我复制/粘贴时看到userService.getUserWithAuthorityByLogin(principal.getName()).map(user->userRepository.findAllByClient(user.getClient().getId()).stream().map(ManagedUserDTO::new).collect(Collectors.toList())).get();
。这应该有所帮助。