Я пытался учить себя Java, и я не могу найти ответ, который ищу в отношении списков массивов.
Мой проект имеет форму, которая при загрузке страницы загружаетсянесколько списков, которые я создал, например, типы бизнес-агентств в флажках или бизнес-класс, который использует список для отображения выпадающих вариантов.
Я писал следующий код для заполнения различных разделов полей.
@GetMapping("/directBind")
public String getDirectBind(Model model){
DirectBind directBind = new DirectBind();
List<String> businessAgencies = new ArrayList<String>();
businessAgencies.add("Personal");
businessAgencies.add("Commercial");
businessAgencies.add("Life");
businessAgencies.add("Benefits");
businessAgencies.add("Health");
businessAgencies.add("Non P and C");
model.addAttribute("businessAgencies", businessAgencies);
List<String> businessAgencyList = new ArrayList<String>();
directBind.setBusinessAgencyList(businessAgencyList);
List<Ams360Policy> ams360Policies = new ArrayList();
Ams360Policy ams360Policy = new Ams360Policy();
ams360Policies.add(ams360Policy);
model.addAttribute("ams360Policies", ams360Policies);
List<String> billTypeList = new ArrayList<String>();
billTypeList.add("Direct Bill");
billTypeList.add("Agency Bill");
model.addAttribute("billTypeList", billTypeList);
ams360Policy.setBillTypeOptions(billTypeList);
directBind.setDirectBox(true);
directBind.setServiceLevel(true);
List<String> businessClasses = new ArrayList<>();
businessClasses.add("Animal Services");
businessClasses.add("Bonds");
businessClasses.add("Contractor");
model.addAttribute("businessClasses", businessClasses);
directBind.setBusinessClasses(businessClasses);
model.addAttribute("directBind", directBind);
return "directBind";
}
Мой вопрос заключается в том, действительно ли это лучший способ создания списка массивов, или это должно идти куда-то еще?Поскольку он живет только в «функции, которая извлекает / загружает форму», поэтому любые изменения в форме, например, разрешение пользователю добавлять новую строку / поле ввода, приведут к тому, что этот кусок кода придется переписать в addRow.функция.Это просто кажется излишним, и мне было интересно, есть ли лучшее место, чтобы добавить это.Как отдельная функция контроллера или функция конструктора в файле классов Java?
Я также заметил, что некоторые поля ввода, в которые пользователь вводит ответ, останутся на странице при добавлении новой строки, а некоторые пользовательские вводы не останутся.Также хотел бы помочь с этим.Не уверен, что это связано с проблемой, потому что я генерирую поля по-разному, или это отдельный вопрос.
Вот часть HTML-кода формы:
<form class="ui form" th:object="${directBind}" th:action="directBind" method="post" style="padding:0 10px;">
<h4>Customer Setup</h4>
<div class="row">
<label >Contact Name (First/Last):</label>
<input type="text" th:field="*{contactName}" required="true" />
</div>
<div class="row">
<label for="formAddress">Address:</label>
<input type="text" id="formAddress" th:field="*{formAddress}" required="true"/>
</div>
<div class="row">
<label for="phoneNumber">Phone Number:</label>
<input type="text" id="phoneNumber" th:field="*{phoneNumber}" required="true"/>
</div>
<div class="row">
<label for="email">Email:</label>
<input type="email" id="email" th:field="*{email}" required="true"/>
</div>
<div class="row">
<label for="website" style="margin-top: 1em;"> Website:</label>
<input type="text" id="website" th:field="*{website}" required="true"/>
</div>
<div class="row">
<label for="nameInsured">Name Insured:</label>
<input type="text" id="nameInsured" th:field="*{insuredName}" required="true"/>
</div>
<div class="row">
<label>Business with Agency:</label>
<div th:each="businessAgency : ${businessAgencies}">
<input type="checkbox" th:field="*{businessAgencyList}" th:value="${businessAgency}"/>
<label th:text="${businessAgency}">Business with Agency</label>
</div>
</div>
<!-- Business Class Drop Down Field Below: -->
<div class="row">
<label>Business Class: </label>
<div >
<select class="form-control" th:field="*{businessClasses}" required="true">
<option th:each="businessClass : ${businessClasses}" th:value="${businessClass}" th:text="${businessClass}"></option>
</select>
</div>
</div>
<div class="row">
<label for="descriptionOfOps">Description of Operations:</label>
<input type="text" id="descriptionOfOps" th:field="*{descriptionOfOps}" required="true" />
</div>
<div class="formFooter">
<input id="send" type="submit" value="send" name="send" class="btn btn-success finish" data-loading-text="Sent!" />
</div>
</form>