Ответ 1
Использовать таблицу (h:dataTable
).
Общая идея: у вас есть список строк (каждый из них представляет название города). В начале списка всего 1 элемент - 1 пустая строка.
Если вы хотите добавить еще один город, выполните некоторые действия (например, нажмите кнопку "Добавить больше городов" ), и это действие добавит еще одну пустую строку в список, и ваша таблица должна быть переименована (через ajax или целое перезагрузка страницы).
После этого вы получите 2 поля ввода на своей странице, каждая из которых привязана к собственному строковому значению. Затем пользователь вводит названия городов, нажимает кнопку "Процесс" и вызывает некоторые действия, в которых вы можете обработать список, который уже содержит 2 непустых строки.
<h:dataTable value="#{dataTableBean.cities}" var="city">
<h:column>
<f:facet name="header" >
<h:outputText value="City name"/>
</f:facet>
<h:inputText value="#{city}"/>
</h:column>
</h:dataTable>
<h:commandButton value="Add one more city" action="#{dataTableBean.enlargeList}"/>
<h:commandButton value="Submit" action="#{dataTableBean.processList}"/>
В bean:
private List<String> cities = new LinkedList<String>();
//getter and setter
...
public String enlargeList () {
cities.add ("");
return "refreshTable"; //the easiest way - just reload the page
}