Walidacja po stronie serwera działa, ale nie wyświetla komunikatów.

0

Witam,
Mam dodaną walidację po stronie serwera przy pomocy hibernate-validator. Walidacja działa, ale nie wyświetla treści błędów. Wiem, że walidacja działa, bo zostaje przekierowany z powrotem na stronę z formularzem, a w przypadku prawidłowego uzupełniania jest przekierowanie na inne.

 

    <mvc:annotation-driven enable-matrix-variables="true" validator="validator"/>

    <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basename" value="classpath:properties/messages"/>
        <property name="defaultEncoding" value="UTF-8"/>
    </bean>

    <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
        <property name="validationMessageSource" ref="messageSource" />
    </bean>

Fragment formularza:

                <form:form modelAttribute="newProject" class="form-horizontal">
                    <form:errors path="*" cssClass="alert alert-danger" element="div"/>
                    <div class="form-group">
                        <label for="name" class="col-sm-2 control-label">Nazwa</label>

                        <div class="col-sm-10">
                            <form:input path="name" cssClass="form-control"/>
                            <form:errors path="name" cssClass="text-danger"/>
                        </div>
                    </div>
 

Przykładowe pole z klasy:

    @NotBlank
    @Size(min=3, max=50, message="{min3max50}")
    private String name;
 

Fragment metody obsługującej formularz - POST

        if (result.hasErrors()) {
            return new ModelAndView("redirect:/projects/add");
            //throw new RuntimeException("Próba wiązania niedozwolonych pól: " + StringUtils.arrayToCommaDelimitedString(suppressedFields));
        }

Capture.PNG

1

Robisz redirect do controllera, a powinieneś przejść do widoku.. czyli "return new ModelAndView("nazwaWidoku");"

0

@Mikey Twoje rozwiązanie jest prawie dobre.
Formularz na początku:
db1.PNG

Formularz po przekierowaniu do widoku:

dbZLE.PNG

Chodzi o to, że w metodzie get obsługującej formularz jest coś takiego: modelMap.put("userList", users);
A w formularzu:

 
                    <div class="col-sm-10">
                        <select name="users" multiple cssClass="form-control">
                            <c:forEach var="user" items="${userList}">
                                <option value="${user.id}">${user.toString()}</option>
                            </c:forEach>
                        </select>
                        <br/><span class="label label-warning"> Nie zapomnij wybrać osób do zadania!</span>
                    </div>

Jeśli dobrze myślę zwracając sam widok, moje userlist jest puste, dlatego nie ma osób. Jak zrobię przekierowanie do kontrolera nie będzie treści błędów. Jak rozwiązać ten problem?

1

"return new ModelAndView("nazwaWidoku", "userList", pobierzListeUserow());"

pobierzListeUserow() zdefinuj sobie jako jakąś metodkę, która będzie ich wyciągać i użyj jej w obydwu metodach reagujących na GET i POST

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