Значения распечатки в выпадающем списке, полученные от arraylist - PullRequest
1 голос
/ 31 октября 2019

Я делаю некоторую форму интерфейса для моего приложения we, которое будет управлять доходами и результатами дома (домашний бюджет).
Чтобы добавить конкретный income, пользователь должен выбрать incomeCategory, например: зарплата / продажа / подарок и т. Д. .
При подготовке формы дохода в HTML я хотел бы напечатать incomeCategory в виде раскрывающегося списка, чтобы пользователь мог выбрать один из доступных вариантов выбора.
Список получен из бэкэнд-службы и является arrayList. .
Проблема, с которой я сталкиваюсь, заключается в распечатке значения описания объекта incomeCategory в выпадающем списке. Все учебники, которые я нашел, были жестко запрограммированы:

<select name="carlist" form="carform">
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="opel">Opel</option>
  <option value="audi">Audi</option>
</select>

Я пытался сделать следующее:

<div><label for="incomeCategory" >Category:</label>
                <select name="incomeCategory" form="incomeCategory">
                    <tr th:each="temp :${incomeCategories}">
                        <option value="${temp}" >${temp.description}</option>
                    </tr>
                </select>
                <input type="hidden" id="incomeCategory"/>
</div>

Я хотел бы сделать что-то, что вы видитев 4-й строке.
у классаcomeCategory есть два атрибута:

public class IncomeCategory{

    private Long id;
    private String description;
// constructor, getters, setters
}

В настоящее время цикл по категориям работает нормально, пока в моем списке есть 3 элемента:
enter image description here
Есть ли возможность использовать HTML и Thymeleaf для распечатки описания категорий в выпадающем списке?
Заранее спасибо за помощь.

1 Ответ

1 голос
/ 31 октября 2019

В вашем коде вы не устанавливаете атрибут th:text, а тимилеф отображает текст в теге <option> (т. Е. $ {Temp.description}) как текст. Вы должны использовать атрибут th:text thymeleaf, чтобы сообщить thymeleaf, что это динамическое значение. Также на th:value вы установили ссылку на объект (temp), вместо этого вы должны использовать temp.id.

Предполагая, что вы уже передали списокcomeCategories в качестве атрибута модели в вашем контроллере, измените свой тег optionкак показано ниже

<option value="Sample" th:each="temp :${incomeCategories}" 
th:value="${temp.id}" th:text="${temp.description}">Sample Description</option>

Используя Thymeleaf, вы можете зацикливаться внутри тега. Я добавил текст Sample and Sample Description, чтобы вы могли отобразить раскрывающийся список, просто загрузив HTML-страницу в браузере, не пропуская контейнер сервлета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...