Я новичок в 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 выбранное значение в форме: выбрано после ошибки проверки формы
но, похоже, это не работает в моем случае.