jak rzucic wyjatek 404?

Odpowiedz Nowy wątek
2018-08-24 09:42
0

Chce rzucic kod błędu 404 zamiast 400, jak to zrobić, mam taki kod, ale zanim rzuce wyjatek jest odpowiedz z bazy 400.

public PersonDto putPerson(PersonDto personDto) {

        //TODO return 404
        if (personRepository.findOne(personDto.getId())== null ){
            throw new ResourceBadRequestException();
        }

Pozostało 580 znaków

2018-08-24 10:34
4

W spring boot'cie wystarczy zrobić swój wyjątek i dodać odpowiedni status w adnotacji

@ResponseStatus(value = HttpStatus.NOT_FOUND)
public class NotFoundException extends RuntimeException {
    public NotFoundException(String s) {
        super(s);
    }
}

Pozostało 580 znaków

2018-08-24 10:35
0

Spróbuj:

return new ResponseEntity<>(HttpStatus.NOT_FOUND);

EDIT: Ok, nie spojrzałem dokładnie, że to nie kontroler, ale na przyszłość niech zostanie :P

edytowany 2x, ostatnio: lukaszek016, 2018-08-24 11:06

Pozostało 580 znaków

2018-08-24 10:46
0

Podstawowe pytanie OPie- czemu nie korzystasz z Optionala?


Nie pomagam przez PM. Pytania zadaje się na forum.
A czemu odpowiadasz nie na temat? Chłopak szuka rozwiązania swojego problemu a Ty piszesz mu że lepiej to inaczej napisać co i tak nie rozwiązuje jego problemu. - diligentia 2018-08-27 10:06

Pozostało 580 znaków

2018-08-24 11:13
1
scibi92 napisał(a):

Podstawowe pytanie OPie- czemu nie korzystasz z Optionala?

a optional rzuci 404?

Pozostało 580 znaków

2018-08-24 11:32
0
masjav napisał(a):
scibi92 napisał(a):

Podstawowe pytanie OPie- czemu nie korzystasz z Optionala?

a optional rzuci 404?

Optional to wrapper na obiekt, który pozwala Ci w eleganacki sposób pracować z ewentualnymi nullami, nie ma to związku z rzucaniem wyjątku, kolega pyta pewnie dlatego, że w fragmencie kodu, który wrzuciłeś, masz sprawdzenie

if (personRepository.findOne(personDto.getId())== null )

edytowany 2x, ostatnio: tomek1221, 2018-08-24 11:33

Pozostało 580 znaków

2018-08-24 12:06
0
throw new WebApplicationException(Response.Status.NOT_FOUND);

Pozostało 580 znaków

2018-08-24 12:10
0

@masjav:

personRepository.findById(personDto.getId()).orElseThrow(NotFoundException::new)

Musisz dodać mapowanie NotFoundExceptiona...


Nie pomagam przez PM. Pytania zadaje się na forum.
edytowany 1x, ostatnio: scibi92, 2018-08-24 12:23
Optional nie ma metody getOrElseThrow. Jest metoda orElseThrow. - monterinio 2018-08-24 12:12

Pozostało 580 znaków

2018-08-24 13:56
0
if (personRepository.findOne(personDto.getId())== null )

skoro metoda findOne zwraca null to zrobienie null checka jest i najlepszym najprostszym rozwiązanie.
Opakowywanie tego w optionala "na siłę" nie jest konieczne.


edytowany 1x, ostatnio: mateuszd, 2018-08-24 13:59

Pozostało 580 znaków

2018-08-24 13:59
0

Ale findById zwraca Optional


Nie pomagam przez PM. Pytania zadaje się na forum.

Pozostało 580 znaków

2018-08-24 14:03
0
scibi92 napisał(a):

Ale findById zwraca Optional

Być może, nie widać tego na załączonym fragmencie kodu


Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0