Thymeleaf Предварительно выбранный Select2 Options

1

Я пытаюсь сделать страницу редактирования, которая имеет список с несколькими выборами, используя select2. В соответствии с документами select2 просто настройка selected="selected" опции selected="selected" должна работать, но я использую шаблоны Java/Spring и Thymeleaf, поэтому это немного сложно.

<select id="programs" name="programs.id" style="min-width: 200px;" multiple="multiple">
    <option
            th:each="programs : ${programs}"
            th:value="${programs.id}"
            th:text="'['+${programs.category.name}+'] '+${programs.name}"
            th:selected="${#lists.contains(personProg,programs.id)}">
    </option>
</select>

programs.id - это идентификатор программы, а personProg - список программ, связанных с идентификатором лиц, таким образом, предварительно выбранный в списке.

Это компилируется и загружается отлично, но не выбрано никаких параметров. Нет html или что-то еще, и я рассмотрел несколько вопросов, #lists.contains() метода #lists.contains(). Я видел, что он не работает с атрибутами th:field, но у меня тоже нет этого.

Java для справки:

@RequestMapping(value="edit", method=RequestMethod.GET)
public String Edit(Model model, @RequestParam(value="userID") long id) {
    Person person = repo.findById(id);
    model.addAttribute("person", person);
    model.addAttribute("users", repo.findByOrderByLastnameAsc());
    model.addAttribute("programs", progRepo.findByOrderByIdAsc());
    model.addAttribute("personProg", personProgRepo.findByPersonid(person.getID()));
    for (PersonPrograms x : personProgRepo.findByPersonid(person.getID())) {
        System.out.println(x.getProgramid());
    }
    return "edit";
}

Выходы в консоли java:

69
1
2
3
66
6
37
59
58

Что я здесь делаю неправильно?

Теги:
jquery-select2
thymeleaf

1 ответ

0
Лучший ответ

Атрибут model, который отправляется, является списком personProg, а не списком идентификаторов, которые вы хотели. Составьте список и отправьте список идентификаторов вместо списка объектов.

List<Integer> programIdList = new ArrayList<Integer>();
for (PersonPrograms x : personProgRepo.findByPersonid(person.getID())) {
   programIdList.add(x.getProgramid());
}
model.addAttribute("personProg", programIdList.toString());

Ещё вопросы

Сообщество Overcoder
Наверх
Меню