Передача значения h: inputtext внутри столбца h: datatable в массив или переменную - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть 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.

Каков будет правильный путь для достижения этого?

...