小编klc*_*klc的帖子

Kotlin:列表中BigDecimal的总和

我有一个我想要过滤的列表,然后返回一个带有金额总和的id地图:

val totalById = list
                    .filter { it.status == StatusEnum.Active }
                    .groupBy { it.item.id }
                    .mapValues { it.value.sumBy { it.amount } }
Run Code Online (Sandbox Code Playgroud)

"it.amount"是BigDecimal,但看起来sumBy只是Int.

对于Java 8,它将是:

Collectors.groupingBy(i-> i.getItem().getId(), Collectors.mapping(Item::getAmount, Collectors.reducing(BigDecimal.ZERO, BigDecimal::add))))

在Kotlin有办法吗?

kotlin

11
推荐指数
3
解决办法
4969
查看次数

Spring 验证 ConstraintViolationException 无法使用 ControllerAdvice 捕获

我正在使用 spring Rest 构建 API 并尝试验证输入参数,如下所示:

@RequestMapping("/myUrl")
@RestController
@Validated
public class MyController {

  @ResponseStatus(HttpStatus.OK)
  @RequestMapping(value = "getSomething", method = RequestMethod.GET, produces = {MediaType.APPLICATION_JSON_VALUE})
  public myResponse getMarketResult(
  @RequestParam @NotNull @NotBlank @NotEmpty String inputParam) {
    //...my implementation
  }
}
Run Code Online (Sandbox Code Playgroud)

验证确实适用于所有这些场景(空、空白、空)。如果为 null,则抛出 MissingServletRequestParameterException;如果为空白/空,则抛出 ConstraintViolationException。

控制器建议:

@ControllerAdvice
public class ControllerValidationHandler extends ResponseEntityExceptionHandler {

  @ExceptionHandler(NestedServletException.class)
  public ResponseEntity<Object> processValidationError(NestedServletException ex, HttpStatus status, WebRequest request) {
    // my implementation
  }

  @ExceptionHandler(ConstraintViolationException.class)
  public ResponseEntity<Object> processValidationError(ConstraintViolationException ex, HttpStatus status, WebRequest request) {
    // my implementation
  }

  @Override
  protected ResponseEntity<Object> …
Run Code Online (Sandbox Code Playgroud)

spring-mvc

5
推荐指数
0
解决办法
1269
查看次数

标签 统计

kotlin ×1

spring-mvc ×1