Mutilple DataModel - DataModelSelection with dataTable & subTable
jmacneedshelp Aug 6, 2009 6:10 AMI have a dataTable of Orders which has subTable of Orderitems. I want to have a link at the order level that will tell me which order was selected but I also want a link at the Orderitem level that will tell me which Orderitem was selected. I have the Order level link working properly, however I cannot figure out how to tell seam to Inject the Orderitem level link, the orderitem var is always null. What am I missing?
Thank you for your time! I greatly appreciate any help that I can get.
DropShipOrderAction component
@Stateful
@Name("DropShipOrders")
public class DropShipOrdersAction implements DropShipOrders {
@Logger private Log log;
@In FacesMessages facesMessages;
@In private EntityManager entityManager;
@DataModel(value="order")
List<Orders> dropShipOrdersList;
@DataModelSelection(value="order")
Orders order;
@DataModel(value="orderitem")
List<Orderitem> orderitems;
@DataModelSelection(value="orderitem")
@Out(required = false)
Orderitem orderitem;
@Factory(scope=ScopeType.CONVERSATION)
public List<Orders> getDropShipOrdersList() {
dropShipOrdersList = entityManager.createQuery("select o from Orders o where o.orderId In(13247,13115)").getResultList();
return dropShipOrdersList;
}
public List<Orderitem> getOrderitems() {
orderitems = order.getOrderitems();
return orderitems;
}
public void transmitOrder(){
log.info("DropShipOrders.transmitOrder Called");
if( order != null) {
log.info("DropShipOrders.transmitOrder Order "+order.getOrderId()+" IS NOT Null");
order.setStatus("Processing");
entityManager.persist(order);
}
if( orderitem != null) {
log.info("DropShipOrders.transmitOrder Orderitem "+orderitem.getOrderItemId()+" IS NOT Null");
}
}
public void transmitLineItem(){
log.info("DropShipOrders.transmitOrderItem Called");
if( order != null) {
log.info("DropShipOrders.transmitOrderItem Order "+order.getOrderId()+" IS NOT Null");
order.setStatus("Processing");
entityManager.persist(order);
//dropShipOrdersList.remove(order);
}
if( orderitem != null) {
log.info("DropShipOrders.transmitOrderItem Item: "+orderitem.getOrderItemId());
}
}
@Destroy @Remove
public void destroy() {}
}
DropShipOrders.xhtml (just the data table section
<rich:dataTable
id="ordersList" var="_orders" value="#{DropShipOrders.dropShipOrdersList}"
rendered="#{not empty ordersList.resultList}">
<!-- <f:facet name="header"> -->
<rich:columnGroup style="border:1px solid #FFFFBB;background: #A99999;color: white;">
<rich:column style="font-size:12px;font-weight:bold;text-align:left" colspan="1">
<f:facet name="header">
<h:outputText value="spacer" />
</f:facet>
Order ID</rich:column>
<rich:column style="font-size:12px;font-weight:bold;text-align:left" colspan="1">
<f:facet name="header">
<h:outputText value="spacer" />
</f:facet>
Customer</rich:column>
<rich:column style="font-size:12px;font-weight:bold;text-align:left" colspan="1">
<f:facet name="header">
<h:outputText value="spacer" />
</f:facet>
Company</rich:column>
<rich:column style="font-size:12px;font-weight:bold;text-align:left" colspan="1">
<f:facet name="header">
<h:outputText value="spacer" />
</f:facet>
Status</rich:column>
<rich:column style="font-size:12px;font-weight:bold;text-align:left" colspan="1">
<f:facet name="header">
<h:outputText value="spacer" />
</f:facet>
Action</rich:column>
</rich:columnGroup>
<!-- </f:facet> -->
<rich:columnGroup style="vertical-align: top;height:25px">
<rich:column colspan="1">
<h:outputText value="#{_orders.orderId}" />
</rich:column>
<rich:column colspan="1">
<h:outputText value="#{_orders.customer.firstName} #{_orders.customer.lastName}" />
</rich:column>
<rich:column colspan="1">
<h:outputText value="#{_orders.customer.organization}" />
</rich:column>
<rich:column colspan="1">
<h:outputText value="#{_orders.status}" />
</rich:column>
<rich:column colspan="1">
<h:form>
<h:commandLink value="test" action="#{DropShipOrders.transmitOrder}"/>
</h:form>
</rich:column>
</rich:columnGroup>
<rich:subTable var="_orderitem" value="#{DropShipOrders.orderitem}">
<rich:column>
<f:facet name="header">Vendor</f:facet>
<h:form styleClass="edit">
<!-- <h:inputHidden id="orderItem" value="#{_orderitem}"/> -->
<h:outputText id="venorName" value="#{_orderitem.vendor.company}"></h:outputText>
<h:selectOneMenu value="#{_orderitem.vendor}">
<s:selectItems value="#{_orderitem.product.vendors}" noSelectionLabel="Select..." var="vendor" label="#{vendor.company}" />
<s:convertEntity/>
<a:support event="onchange" reRender="ovenorName" focus="venorName" process="_orderitem" ajaxSingle="true"/>
</h:selectOneMenu>
</h:form>
<f:facet style="height : 25px;" name="ass">test<rich:spacer style=" width : 26px; height : 25px;"></rich:spacer></f:facet>
</rich:column>
<rich:column>
<f:facet name="header">Qty</f:facet>
<h:outputText value="#{_orderitem.quantity}"></h:outputText>
<f:facet style="height : 25px;" name="ass"><rich:spacer style=" width : 26px; height : 25px;"></rich:spacer></f:facet>
</rich:column>
<rich:column>
<f:facet name="header">Product</f:facet>
<h:outputText value="#{_orderitem.product.name}"></h:outputText>
<f:facet style="height : 25px;" name="ass"><rich:spacer style=" width : 26px; height : 25px;"></rich:spacer></f:facet>
</rich:column>
<rich:column >
<f:facet name="header">Model</f:facet>
<h:outputText value="#{_orderitem.code}"></h:outputText>
<f:facet style="height : 25px;" name="ass">this is a test<rich:spacer style=" width : 26px; height : 25px;"></rich:spacer></f:facet>
</rich:column>
<rich:column >
<f:facet name="header">Action</f:facet>
<h:form>
<h:inputHidden value="" binding="#{_order}" />
<h:commandLink value="test" action="#{DropShipOrders.transmitLineItem}"/>
</h:form>
<f:facet style="height : 25px;" name="ass">this si a test<rich:spacer style=" width : 26px; height : 25px;"></rich:spacer></f:facet>
</rich:column>
</rich:subTable>
<rich:columnGroup style="height:50px;border:none;">
<rich:column colspan="5"></rich:column>
</rich:columnGroup>
</rich:dataTable>
</div>
</rich:panel>