folder Tahribat.com Forumları
linefolder Java
linefolder Java Rest Service Number Validation Sorunu



Java Rest Service Number Validation Sorunu

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kajmerpac
    kajmerpac's avatar
    Kayıt Tarihi: 03/Kasım/2008
    Erkek

    Merhaba,

    Spring boot üzerinde rest servisleri geliştiriyorum. Post methodunda json geliyor ve @requestbody ile bir classa parse ediyorum. 

    Takıldığım konu,

    class içerisinde int bir alan olsun bu alana karşı taraf karakter içeren bir değer gönderdiğinde json parse hatası veriyor. aslında hatası mantıklı ama hata mesajını düzenlemek istiyorum. Alanım string olsa pattern kullanarak model validation yapabilirdim ama int alanda bir yöntem bulamadım. bunun yöntemini bilen veya başka bir yöntem önerecek var mıdır?

    Hatayı yakalayabiliyorum fakat hatayı parçalayıp a alanına karakter gönderemezsiniz demek çok zor.

    custom validator kullanarak yapabilirim ama o da biraz uğraştırıcı geldi. Umarım anlatabildim :)

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    tagext
    tagext's avatar
    Üstün Hizmet Madalyası Başarı Madalyası
    Kayıt Tarihi: 25/Temmuz/2002
    Erkek

    bean validator kullanıyor isen onun hata mesajlarını ezebilirsin.

    field ların üzerine koyacağın anotasyonların message diye bi attribute u var onunla işini görebilirsin.

    https://samaxes.com/2014/04/jaxrs-beanvalidation-javaee7-wildfly/

    tagext tarafından 08/May/18 20:07 tarihinde düzenlenmiştir

    ftw
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kajmerpac
    kajmerpac's avatar
    Kayıt Tarihi: 03/Kasım/2008
    Erkek
    tagext bunu yazdı

    bean validator kullanıyor isen onun hata mesajlarını ezebilirsin.

    field ların üzerine koyacağın anotasyonların message diye bi attribute u var onunla işini görebilirsin.

    https://samaxes.com/2014/04/jaxrs-beanvalidation-javaee7-wildfly/

    sağol hocam. String olsa pattern annotation ile yapabilirdim fakat numeric fieldlarda olmuyor başka öneri var mıdır?

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    tagext
    tagext's avatar
    Üstün Hizmet Madalyası Başarı Madalyası
    Kayıt Tarihi: 25/Temmuz/2002
    Erkek

    Rest exception handler yazman lazım

    Şurd var

    https://github.com/cekinmezyucel/stumpy


    ftw
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kajmerpac
    kajmerpac's avatar
    Kayıt Tarihi: 03/Kasım/2008
    Erkek

    Exceptionı yakalayabiliyorum fakat ona gelen mesajdan alanı hatayı falan ayıklamak çok zor 

     

     

    Error message is: JSON parse error: Cannot deserialize value of type java.lang.Short from String "a": not a valid Short value

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kajmerpac
    kajmerpac's avatar
    Kayıt Tarihi: 03/Kasım/2008
    Erkek

    bu şekilde yaptım

    @ExceptionHandler(HttpMessageNotReadableException.class)
    public ResponseEntity<ExceptionResponse> handleHttpMessageNotReadable(HttpMessageNotReadableException ex) {
    String fieldName = "";

    String message = "";

    if (!(ex.getCause() instanceof JsonMappingException)) {
    return new ResponseEntity<ExceptionResponse>(HttpStatus.BAD_REQUEST);
    }

    JsonMappingException e = (JsonMappingException) ex.getCause();

    for (JsonMappingException.Reference reference : e.getPath()) {
    fieldName = reference.getFieldName();
    }

    if (fieldName.toLowerCase().contains("date"))
    message = fieldName + " format exception. Should be yyyy-MM-dd";
    else
    message = fieldName + " can not take characters.";

    ExceptionResponse er = new ExceptionResponse();
    er.setResult("Failure");
    er.setStatus(HttpStatus.BAD_REQUEST.value());
    er.setDescription(message);

    return new ResponseEntity<ExceptionResponse>(er, HttpStatus.BAD_REQUEST);

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    tagext
    tagext's avatar
    Üstün Hizmet Madalyası Başarı Madalyası
    Kayıt Tarihi: 25/Temmuz/2002
    Erkek

    Custom bir format kullanıyosan xmljavatypeadapter olarak kendi formatterını  ekleyebilirsin. Java validation api yahut bean validation dokümantasyonuna bakabilirsin. 


    ftw
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kajmerpac
    kajmerpac's avatar
    Kayıt Tarihi: 03/Kasım/2008
    Erkek
    tagext bunu yazdı

    Custom bir format kullanıyosan xmljavatypeadapter olarak kendi formatterını  ekleyebilirsin. Java validation api yahut bean validation dokümantasyonuna bakabilirsin. 

    şimdilik kurtardım ama dediklerine de bakcam hocam sağolasın yardımlar için

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    musdawdaf
    musdawdaf's avatar
    Kayıt Tarihi: 01/Ağustos/2006
    Erkek

    Exception icinde type ve value var 

    getType dersen `long` falan doner. value'da sana girilen input. 

    kendi formatini olursturup `Can not parse %s as %s , value, type` direk error donebilirsin.

    jersey'de ise rest servislerin JacksonException'dan boyle alabilirsin

      private String getReadable(InvalidFormatException error) {
            return String.format("%s cannot be parsed as %s", error.getValue(), error.getTargetType().getName());
        }



    musdawdaf tarafından 09/May/18 21:35 tarihinde düzenlenmiştir
Toplam Hit: 2146 Toplam Mesaj: 9
java spring boot rest service