Walidacja

D4
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 4 lata
  • Postów:17
0

Mam problem z wyświetleniem w formularzu informacji o pustym polu.

Kod odpowiadający za sprawdzenie formularza

Kopiuj
    @Autowired
    ServicePracownik servicePracownik;

    @Autowired
    ServiceKlient serviceKlient;

    @Autowired
    Klient klient;

  @RequestMapping(value = "/klienci" , method = RequestMethod.POST)
    public ModelAndView DodajKlienta (@Valid Klient klient , @ModelAttribute("idd") Pracownik pracownik, BindingResult bindingResult ){
            ModelAndView modelAndView = new ModelAndView();

        if(bindingResult.hasErrors())
        {
            modelAndView.addObject("users" , servicePracownik.getAllPracownik());
            modelAndView.addObject("klient" , new Klient());
            modelAndView.setViewName("dodanie_klienta");
        }
        else {
            klient.setPracownik(pracownik);
            serviceKlient.createOrUpdateKlient(klient);
            modelAndView.setViewName("redirect:/strona/klienci");
        }
            return modelAndView;
    }

Formularz html

Kopiuj
					  <form th:object="${klient}" method="post" th:action="@{/strona/klienci}" >

						  <input hidden="hidden" th:field="*{id}">

						  <div class="form-row">
							<div class="form-group col-md-8">
							  <label >Imię i Nazwisko lub Nazwa</label>
							  <input type="text" class="form-control is-valid" th:field="*{nazwa}" >
				     			<label class="validation-message" th:if="${#fields.hasErrors('nazwa')}" th:errors="*{nazwa}"></label>
							</div>
Kopiuj
    @Column
    @NotEmpty(message = "IMIĘ i NAZWISKO nie może być puste")
    private String nazwa;

Informacja o błędzie

Field error in object 'klient' on field 'nazwa': rejected value []; codes [NotEmpty.klient.nazwa,NotEmpty.nazwa,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [klient.nazwa,nazwa]; arguments []; default message [nazwa]]; default message [IMIĘ i NAZWISKO nie może być puste]]
Nie wiem gdzie jest problem po stronie java czy html

Charles_Ray
  • Rejestracja:około 17 lat
  • Ostatnio:około 7 godzin
  • Postów:1881
0

Polecam przerobić najpierw jakiś tutorial, problem wygląda na podstawowy. Po kodzie jednak widzę, że nie bardzo wiesz, co czynisz:

Kopiuj
@Autowired
Klient klient;

Klient ma być DTOsem, encją czy beanem?

Poleciał wyjątek walidacji, ale dla klucza IMIĘ i NAZWISKO nie może być puste nie masz wpisu w messages.properties - to tam powinien znajdować się tekst: https://www.baeldung.com/spring-custom-validation-message-source


”Engineering is easy. People are hard.” Bill Coughran
edytowany 4x, ostatnio: Charles_Ray
D4
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 4 lata
  • Postów:17
0

Ogólnie to jest pozostałość po moich próbach rozwiązania problemu, znalazłem na stackoverflow chyba podobny problem.
https://stackoverflow.com/questions/53336349/springboot-validation-exception-org-springframework-validation-beanpropertybind
Ja zrozumiałem że muszę wstrzyknąć obiekt.

Charles_Ray
To co masz w kodzie jest dziwne - nie wydaje Ci się? Z czego się uczysz? Czytałeś dokumentacje?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.