У меня есть h: datatable с 5 столбцами. Последние 2 столбца - это h: inputtext и commandButton. Предполагается, что после нажатия кнопки некоторая информация о строке направляется в другой источник данных. Переданная информация включает в себя то, что находится во входном тексте.
JSF код:
<h:dataTable class="table"
headerClass="table-header"
rowClasses="table-odd-row, table-even-row"
value="#{food.getAllFoods()}"
var="foodlist">
<h:column>
<f:facet name="header">
Name
</f:facet>
#{foodlist.name}
</h:column>
<h:column>
<f:facet name="header">
Description
</f:facet>
#{foodlist.description}
</h:column>
<h:column>
<f:facet name="header">
Price
</f:facet>
#{foodlist.price}
</h:column>
<h:column>
<f:facet name="header">
Quantity
</f:facet>
<h:inputText value="#{productModel.qty[row.index]}"/>
</h:column>
<h:column>
<f:facet name="header">
Add to cart
</f:facet>
<h:form>
<h:commandButton value="Add to cart"
actionListener="#
{productModel.addProduct(foodlist.name, foodlist.price,
productModel.qty[loop.index])}"
action="orderwhat">
</h:commandButton>
</h:form>
</h:column>
</h:dataTable>
Предполагается, что поле ввода текста в таблице данных позволяет пользователю ввести желаемое количество (целое число). Ввод должен быть сделан в ArrayList кол-во.
<h:column>
<f:facet name="header">
Quantity
</f:facet>
<h:inputText value="#{productModel.qty[row.index]}"/>
</h:column>
Затем этот массив доступен командой commandButton:
<h:column>
<f:facet name="header">
Add to cart
</f:facet>
<h:form>
<h:commandButton value="Add to cart"
actionListener="#
{productModel.addProduct(foodlist.name,
foodlist.price,
productModel.qty[loop.index])}"
action="orderwhat">
</h:commandButton>
</h:form>
</h:column>
Проблема:
Входной текст, созданный столбцом h: не передает значение, которое он содержит, в массив.
Бэк-бобы работают нормально. Проблема в коде JSF.
Каков будет правильный путь для достижения этого?