170 похожих чатов

Так, в общем все вроде получилось, но не совсем. Вот

смотрите я сделал такую обертку для всех возвращаемых значений (и из методов контроллеров и из обработчиков ошибок):


public class ResultView<T> {
public final String status;
public final T value;
public final List<Object> errors;

private ResultView(String status, T value, Stream<Object> errors) {
this.status = status;
this.value = value;
this.errors = errors.collect(Collectors.toList());
}

public static <T> ResultView<T> success(T result) {
return new ResultView<>("success", result, Stream.empty());
}

public static <T> ResultView<T> error(Stream<Object> errors) {
return new ResultView<>("error", null, errors);
}

public static <T> ResultView<T> error(Object error) {
return error(Stream.of(error));
}
}

public class ValidationErrorView {
public final String message;
public final String field;

public ValidationErrorView(String message, String field) {
this.message = message;
this.field = field;
}
}

И все бы хорошо, но когда я именно возвращаю ошибки валидации вот так:


@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ResponseBody
public ResultView<Object> processValidationError(MethodArgumentNotValidException e) {
Stream<ValidationErrorView> errors = e.getBindingResult().getFieldErrors().stream().map(x -> new ValidationErrorView(x.getDefaultMessage(), x.getField()));
return error(errors);
}
То у меня на фронт приходит вот такой json:

{
"status": "error",
"value": null,
"errors": [
{
"parallel": false
}
]
}
Что это за parallel не подскажете? Очень странно... Для обычных строк и success работает нормально.

2 ответов

10 просмотров

а зачем ты все в Stream оборачиваешь это фетиш такой

В BaseStream от которого Stream наследуется, есть метод isParallel, который говорит последовательный стрим у тебя или нет. Если ты маршаллер никак не тюнил, он наверняка это засунет в результат

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта