Выбранный тег исчезает после проверки формы и отправки в JSP - PullRequest
0 голосов
/ 07 июня 2019

Я новичок в Spring и пытаюсь исправить небольшую проблему в своем приложении. У меня есть форма для редактирования профиля пользователя. В этой форме у меня есть один выпадающий список, в котором пользователь-администратор может выбрать роль пользователя для редактируемого пользователя. Когда я собираюсь редактировать страницу пользователя, тогда все данные в форме заполняются из базы данных. Допустим, у меня есть два ввода в форме: input с lastName и select с ролью пользователя . Элемент select содержит все роли, которые существуют в базе данных, но выбранная роль соответствует роли, которую фактически назначил пользователь.

Это часть моей формы - введите lastName

<spring:bind path="lastName">
    <div class="form-group">
        <label for="lastName">Last name</label>
        <form:input path="lastName" type="text" class="form-control ${status.error ? 'border border-danger' : ''}" id="lastName" />
        <form:errors path="lastName" cssStyle="color: #ff0000;"/>
    </div>
</spring:bind>

и это элемент выбора:


<form:select path="roles" id="role" multiple="false">
    <form:options items="${allRoles}" itemValue="id" itemLabel="role"/>
</form:select>

Теперь, когда я хочу отредактировать lastName, например. оставьте пустое поле, затем Spring проверяет это поле и выдает ошибку. Проблема в том, что роль, ранее выбранная в элементе select, теперь не выбрана.

Это HTML-код страницы перед проверкой:

ввод:

<div class="form-group  ">
        <label for="email" class="active">Email</label>
        <input id="email" name="email" type="email" class="form-control" value="ola@test.com">
</div>

выберите:

<select id="role" name="roles"">
<option value="1">ADMIN</option>
<option value="2">USER</option>
<option value="3">STUDENT</option>
<option value="4" selected="selected">LECTURER</option>
</select>

и как только поле lastName очищается и форма отправляется: вход:

<div class="form-group">
        <label for="lastName" class="">Last name</label>
        <input id="lastName" name="lastName" type="text" class="form-control border border-danger" value="">
        <span id="lastName.errors" style="color: #ff0000;">This field is required.</span>
</div>

выберите:

<div class="form-group">
<label for="role">Role Id</label>
<select id="role" name="roles">
<option value="1">ADMIN</option>
<option value="2">USER</option>
<option value="3">STUDENT</option>
<option value="4">LECTURER</option>
</select>
</div>

Как видите, атрибут selected= "selected" исчез из опции 4. Как это предотвратить? Btw. Мне известно об этом Spring MVC выбранное значение в форме: выбрано после ошибки проверки формы

но, похоже, это не работает в моем случае.

1 Ответ

0 голосов
/ 07 июня 2019

Я нашел несколько советов на заархивированной странице здесь

Теперь выбранный атрибут не удаляется из тега опции.Я не уверен, что это хороший способ решить эту проблему, но он работает для меня ..

Измененный выбор:

<form:form method="post" modelAttribute="editForm">
        <c:forEach items="${editForm.roles}" var="role">
            <c:set var="userRoleId" value="${role.id}" scope="request"/>
        </c:forEach>

        <form:select path="roles" id="role" multiple="false">
            <c:forEach var="tempRole" items="${allRoles}">
                <option value="${tempRole.id}" <c:if test="${tempRole.id == userRoleId}">selected="selected"</c:if> value="${tempRole.id}">${tempRole.role}</option>
            </c:forEach>
        </form:select>
</form:form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...