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>
 
    