Я пытаюсь создать форму ввода для ответов в моем приложении, и я начинаю с четырех «пустых» ответов, для которых представление циклично повторяется и для которых создаются поля ввода. У меня есть кнопка «Добавить ответ», в которую я добавляю один вопрос к массиву ответов, а затем представление снова отображает ответы, но теперь с дополнительным полем ввода. Задний боб является видимым. Однако, если я отправляю форму без нажатия кнопки «Добавить ответ», все работает. Данные сохраняются в базе данных. Но если я добавлю ответ после того, как четверка заполнена, последний не получит данные из поля ввода (answer.description). Если я сначала нажму кнопку «Добавить ответ» (без заполнения каких-либо полей ввода), данные из полей не будут собраны вообще, а все 5 будут пустыми, поэтому в базе данных данные не будут сохранены.
У меня есть это в форме:
<ui:repeat var="answer" value="#{bean.answers}">
<div class="field">
<h:outputLabel for="answerAlternative-#{answer.serialNumber}"
value="Svaralternativ #{answer.serialNumber}" />
<h:inputText id="answerAlternative-#{answer.serialNumber}"
value="#{answer.description}" size="40" />
</div>
</ui:repeat>
Это метод для создания нового поля ввода:
public String addAnswer() {
if (answers.size() + 1 < 6) {
Answer answer = new Answer();
answer.setSerialNumber(answerSerialNumber + "");
answerSerialNumber++;
answers.add(answer);
}
return null;
}
Используется для инициализации массива ответов четырьмя пустыми полями ввода:
@PostConstruct
public void initBean() {
answers = new ArrayList<Answer>();
for (int i = 0; i < 4; i++) {
addAnswer();
}
}