0 Replies Latest reply on Apr 11, 2007 1:05 PM by Brian Smith

    Form not submitting using PageFlows

    Brian Smith Apprentice

      I have a weird problem using pageflows. I have a h:commandLink in a datatable that has an action pointing to a transition in a pageflow. When just the action of the commandLink is set, the form never gets submitted and hence my DataModelSelection component is not set. When I throw in an arbitrary actionListener on the commandLink, the form is submitted and all is well. I think I am missing something surely fundamental but can't see it.

      When I take out the actionListener, selectedRequest is null, when I put it back in, selectedRequest returns the selected row of the DataModel

      Here is the commandLink

      <h:commandLink action="viewRequest" actionListener="#{requestEntry.printSelectedRequest}"
      value="#{msgs['ServiceRequestList.viewRequest']}"/>


      The pageFlow

      <pageflow-definition
       xmlns="http://jboss.com/products/seam/pageflow"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation= "http://jboss.com/products/seam/pageflow http://jboss.com/products/seam/pageflow-1.2.xsd"
       name="serviceRequestCreation">
      
       <start-page name="addressSearch" view-id="/AddressLookup.xhtml">
       <transition name="viewRequests" to="requestListing"/>
       </start-page>
       <page name="requestListing" view-id="/AddressRequestListing.xhtml">
       <redirect/>
       <transition name="viewRequest" to="serviceRequest"/>
       </page>
       <page name="serviceRequest" view-id="/ServiceRequest.xhtml">
       <redirect/>
       </page>
      
      </pageflow-definition>


      Here is the SFSB

      @Stateful
      @Name("requestEntry")
      @Scope(ScopeType.CONVERSATION)
      public class RequestEntryAction implements com.stlouiscity.csb.ejb.action.RequestEntry {
      
       @PersistenceContext(unitName="CSB_Oracle", type=PersistenceContextType.EXTENDED)
       private EntityManager em;
      
       @In(create=true)
       private Address address;
      
       @DataModel("addresses")
       private List<ParcelAddress> addresses;
      
       @DataModelSelection(value="addresses")
       @Out(required=false)
       private ParcelAddress selectedAddress;
      
       @DataModel("requests")
       private List<ServiceRequest> requests;
      
       @DataModelSelection(value="requests")
       private ServiceRequest selectedRequest;
      
       public RequestEntryAction() {
       }
      
       public void findAddresses() {
       if (address.getStreetName() != null) {
       System.out.println("Address Is NOT NULL");
       //Find ParcelAddress
       Query q = em.createQuery("Select a From ParcelAddress a Where" +
       " (a.structureAddress.nlc.streetDirection = :streetDirection OR :streetDirection IS NULL) AND" +
       " (lower(a.structureAddress.nlc.streetName) LIKE :street) AND" +
       " (((a.structureAddress.structureAddressPK.houseNumber = :houseNumber) OR" +
       " (:houseNumber BETWEEN a.structureAddress.houseLow AND a.structureAddress.houseHigh)) OR (:houseNumber IS NULL))");
       q.setParameter("houseNumber",address.getHouseNumber());
       q.setParameter("streetDirection",address.getStreetDirection());
       q.setParameter("street",address.getStreetName().toLowerCase() + "%");
       addresses = q.getResultList();
       } else {
       System.out.println("Address IS NULL");
       }
       }
      
       public void viewRequests() {
       System.out.println("**********Started PageFlow*************");
       findRequests(selectedAddress);
       }
      
       public void findRequests(ParcelAddress address) {
       System.out.println("**********Entered findRequests*************");
       System.out.println("**********Selected Address: " + address.toString());
       Query q = em.createQuery("Select s From ServiceRequest s Where" +
       " s.parcelAddress.parcelAddressPK.houseNumber = :houseNumber AND" +
       " s.parcelAddress.parcelAddressPK.houseSuffix = :houseSuffix AND" +
       " s.parcelAddress.parcelAddressPK.nlc = :nlc AND" +
       " s.parcelAddress.parcelAddressPK.cityBlock = :cityBlock AND" +
       " s.parcelAddress.parcelAddressPK.parcelNumber = :parcelNumber)");
       q.setParameter("houseNumber", address.getParcelAddressPK().getHouseNumber());
       q.setParameter("houseSuffix", address.getParcelAddressPK().getHouseSuffix());
       q.setParameter("nlc", address.getParcelAddressPK().getNlc());
       q.setParameter("cityBlock", address.getParcelAddressPK().getCityBlock());
       q.setParameter("parcelNumber", address.getParcelAddressPK().getParcelNumber());
       requests = q.getResultList();
       }
       }
      
       public void printSelectedRequest() {
       System.out.println("Selected Request: " + getSelectedRequest().toString());
       }
      
       @Remove @Destroy
       public void destroy() {
      
       }
      
       public ServiceRequest getSelectedRequest() {
       return selectedRequest;
       }
      
       public void setSelectedRequest(ServiceRequest selectedRequest) {
       this.selectedRequest = selectedRequest;
       }
      


      TIA