SelectableItem problem
zealot Oct 10, 2005 10:41 AMHi everyone!
i have some strange problem (on example DVDstore such code working)
i have list of SelectableItems
public class SelectableItem<SiteProduct> implements Serializable {
SiteProduct item;
boolean selected = false;
public SelectableItem(SiteProduct item) { this.item = item; }
public SiteProduct getItem() { return item; }
public void setItem(SiteProduct item) { this.item = item; }
public boolean getSelected() { System.err.println("getSelected() " + selected); return selected; }
public void setSelected(boolean val) { this.selected=val; System.err.println("setSelected() " + val);}
public String toString() {
return super.toString() + "[selected=" + selected + "]";
}
}it exposes on form
@Stateful
@Name("productOrdering")
@Interceptor(SeamInterceptor.class)
@Conversational(ifNotBegunOutcome="main")
@LoggedIn
public class ProductOrderingAction implements ProductOrdering, Serializable {
private static final Logger log = Logger.getLogger(ProductOrdering.class);
@PersistenceContext(type=EXTENDED)
private EntityManager em;
private String searchString;
@Out
public List<SelectableItem<SiteProduct>> products;
......
public List getProducts() {
return products;
}
public String addToCart() {
log.info("Started adding to cart");
if (products == null) {
log.info("products null");
return null;
}
for (SelectableItem<SiteProduct> item: products) {
log.info("flag " + item.getSelected());
if (item.getSelected()) {
item.setSelected(false);
log.info("????????? ? ??????? " + item.getItem().getName());
cartService.addProduct(item.getItem(), new Double(1));
}
}
return null;
}
}.xhtml code:
<ui:define name="content">
<div class="section">
<h1>Search Products</h1>
<h:form>
<fieldset>
<h:inputText value="#{productOrdering.searchString}" style="width: 165px;" />
<h:commandButton value="Find Products" action="#{productOrdering.find}" styleClass="button" />
</fieldset>
</h:form>
</div>
<div class="section">
<h:outputText value="No Products Found" rendered="#{productOrdering.products != null and empty productOrdering.products}"/>
<h:form rendered="#{not empty productOrdering.products}">
<h:dataTable value="#{productOrdering.products}" var="prod">
<h:column>
<f:facet name="header">V</f:facet>
<h:selectBooleanCheckbox rendered="#{!empty(prod.item.price)}" value="#{prod.selected}"/>
</h:column>
<h:column>
<f:facet name="header">Id</f:facet>
#{prod.item.markingOfGoods}
</h:column>
<h:column>
<f:facet name="header">Name</f:facet>
#{prod.item.name}
</h:column>
<h:column>
<f:facet name="header">Unit</f:facet>
#{prod.item.unit}
</h:column>
<h:column>
<f:facet name="header">Price</f:facet>
#{prod.item.price}
</h:column>
<h:column>
<f:facet name="header">Action</f:facet>
<h:commandLink action="#{productOrdering.selectProduct}">View Product</h:commandLink>
</h:column>
</h:dataTable>
<fieldset>
<h:commandButton value="Add selected to cart" action="#{productOrdering.addToCart}" styleClass="button" />
</fieldset>
</h:form>
</div>but when i select some products and trying to "add them to cart" seems like no one is selected
help me please, suffer all day
--Andrew