Использование индексированных свойств полос для заполнения карты
Надеюсь, вы поможете мне найти ответ на вопрос, который занимал меня уже 2 дня.
Я создаю приложение для бронирования мест в театре как часть курса Java, которому я следую.
Я пытаюсь использовать функцию индекса полосы для заполнения объекта карты, используя поля ввода текста полосы.
Смотрите код ниже.
JSP:
<c:set var="voorstellingen" value="${actionBean.theater.voorstellingen}" />
<s:form beanclass="theater.action.TheaterActionBean" method="get">
<d:table name="${actionBean}">
<d:column title="naam">
Naam:<s:text name="naam" title="Naam" size="30">Voer uw naam in</s:text>
</d:column>
<d:column title="telefoon" >
Telefoonnummer:<s:text name="telefoon" title="Telefoon" size="30">Voer uw telefoonnummer in</s:text>
</d:column>
</d:table>
<p></p>
<table id="voorstelling">
<thead>
<tr>
<th>Voorstelling</th>
<th>Datum</th>
<th>Aantal vrij plaatsen</th>
<th>Aantal te reserveren</th>
</tr>
</thead>
<tbody>
<c:forEach items="${voorstellingen}" var="voorstelling" >
<tr>
<td><c:out value="${voorstelling.naam}" /></td>
<td><c:out value="${voorstelling.datum.time}" / </td>
<td><c:out value="${voorstelling.aantalVrij}" /></td>
<td><c:out value="${voorstelling.id}" /></td>
<td><s:text name="aantal[${voorstelling.id}]"></s:text>
</tr>
</c:forEach>
</tbody>
</table>
<s:submit name="reserveer" value="Reserveren"/>
</s:form>
Приведенный выше код генерирует таблицу, в которую вы можете поместить данные о клиенте, затем раздел, который показывает театральные представления и текстовое поле, в котором вы можете указать количество билетов, которое вы хотите заказать. Нажатие "Резервный" переадресует к обработчику событий в actionBean.
Ниже приведен соответствующий код в моем ActionBean
открытый класс TheaterActionBean расширяет BaseActionBean {
private static final String FORMVIEW = "/WEB-INF/jsp/theater.jsp";
private String naam = null;
private String telefoon=null;
//private int aantal = 0;
private int id = 0;
private Map<Integer,Integer> aantal = null;
public String message = null;
......
public Resolution reserveer() throws TheaterException{
message = message + "Telefoon:" + telefoon + "Naam:" + naam + "Aantalreserveren:" + aantal;
Theater theater=getContext().getCurrentTheater();
if (aantal != null){
Iterator it = aantal.entrySet().iterator();
while (it.hasNext()){
Map.Entry paar= (Map.Entry)it.next();
message = message + "key " + paar.getKey() + "value" + paar.getValue();
}
}
return new ForwardResolution(FORMVIEW);
}
......
public void setAantal(Map<Integer,Integer> aantal){
this.aantal = aantal;
}
Читая некоторые другие источники, такие как
http://www.coderanch.com/t/555416/oa/Stripes-Nested-Indexed-Properties-Select и https://stripesframework.atlassian.net/wiki/display/STRIPES/Indexed+Properties
я ожидаю следующего
<s:text name="aantal[${voorstelling.id}]"></s:text>
сопоставить с атрибутом Map с именем aantal в моем ActionBean, но ik возвращает нулевое значение.
Моя цель - использовать карту для обработки отдельных резервирований для каждого театрального представления с использованием базовой модели.
Что мне нужно сделать, чтобы заставить это работать с полосами?
С уважением,
Jos
1 ответ
Несмотря на то, что примеры кода содержат несколько эллипсов, возможно, вы не реализовали метод получения для aantal
:
public Map<Integer,Integer> getAantal(){
return aantal;
}
Не совсем уверен в этом, но я считаю, что Стрипс анализирует метод получения индексированных свойств в ActionBean, чтобы получить информацию общего типа для привязки.