Вам необходимо использовать var
в <apex:repeat>
для каждого элемента в списке productDetails
. Например:
<apex:repeat value="{!productDetails}" var="productDetail">
<apex:pageBlockSection>
<apex:outputText style="label" value="Quantity:"> </apex:outputText>
<apex:inputText value="{!productDetail.quantity}"/>
</apex:pageblockSection>
</apex:repeat>
Это установит свойство quantity
каждого productDetail
.
Если вы действительно перебираете родительский элемент productDetail
в этом примере, то вам нужно изменить контроллер, чтобы создать родительский элемент для каждого, а затем перебрать его. Я напишу пример кода, как будто вы перебираете список потенциальных заказов.
В вашем контроллере вам нужно будет создать заказ для каждого из продуктов. Я не уверен, является ли родительский объект SObject или пользовательским классом, но я напишу пример, как если бы это был пользовательский класс.
public class Order {
public Order(ProductDetail productDetail) {
this.productDetail = productDetail;
}
public ProductDetail productDetail;
public Integer quantity;
}
// I assume you've already implemented this getter or are setting it some other way.
public ProductDetail[] productDetails {
get {
if (productDetails == null) {
productDetails = ...;
}
return productDetails;
}
set;
}
public Order[] orders {
get {
if (orders == null) {
orders = new Order[]{};
for (ProductDetail productDetail: productDetails) {
orders.add(new Order(productDetail);
}
}
return orders;
}
set;
}
Теперь на вашей странице VisualForce вы можете перебирать список Order
, и пользователь может задать количество.
<apex:repeat value="{!orders}" var="order">
...
<apex:outputtext style="label" value="Name:"></apex:outputText>
<apex:outputLabel value="{!order.productDetail.name}" />
...
<apex:inputText value="{!order.quantity}"/>
....
</apex:repeat>
Вернувшись в контроллер, сохраните только orders
, у которого quantity
больше нуля (или любые другие критерии, которые вы имеете в виду).