1 Reply Latest reply on Aug 6, 2007 6:23 AM by Pete Muir

    Double click problem . Seam-Version: 1.2.1.GA

    Liliana Liliana Newbie

      Hi:
      I am using Seam-Version: 1.2.1.GA.
      I am using PageFlow. I have a problem when i press a lot of time the next buttom , i have the following error

      *****************
      2007-08-06 09:15:04 StandardWrapperValve[FacesServlet]: Servlet.service() for servlet FacesServlet threw exception
      javax.faces.el.EvaluationException: /normal-application.jspx @13,72 rendered="#{normalCreditApplication.serviceProvider}": Exception getting value of property serviceProvider of base of type : com.yoogalu.ncf.web.seam.bean.NormalCreditApplication_$$_javassist_2

      Caused by: org.jboss.seam.NoConversationException: no long-running conversation for @Conversational bean: normalCreditApplication

      **********************

      I read that with Seam-Version: 1.2.1.GA i will not have problem with double click. Can you give some suggestion? . This problem only occur when i press the buttom a lot of times.


      Thank for your help



      It is my 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="normalCreditApplicationFlow">
      <start-state>

      </start-state>

      <page name="normal" view-id="/normal-application.jspx"
      back="disabled">

































      <page name="normalSerialNumberPrint" view-id="/normal-serialnumber-print.jspx"
      back="enabled">























      <page name="normalListPossibleDebtors"
      view-id="/list-existing-debtors.jspx" back="disabled">














      <page name="normalListPossibleDebtorsPrint"
      view-id="/list-existing-debtors.jspx" back="disabled">














      <page name="toEditApplication" view-id="/loan-application.jspx">



      <page name="salary" view-id="/salaryApplication.jspx"
      back="disabled">

      <end-conversation />


      </pageflow-definition>



      My bean :

      package com.yoogalu.ncf.web.seam.bean;

      import java.io.Serializable;
      import java.sql.Timestamp;
      import java.util.HashMap;
      import java.util.List;
      import java.util.Map;
      import javax.faces.event.ValueChangeEvent;
      import org.jboss.seam.ScopeType;
      import org.jboss.seam.annotations.Begin;
      import org.jboss.seam.annotations.Conversational;
      import org.jboss.seam.annotations.In;
      import org.jboss.seam.annotations.Name;
      import org.jboss.seam.annotations.Out;
      import org.jboss.seam.annotations.Scope;
      import org.jboss.seam.annotations.datamodel.DataModel;
      import org.jboss.seam.annotations.datamodel.DataModelSelection;
      import org.jboss.seam.core.FacesMessages;

      import com.yoogalu.framework.FrameworkConstants;
      import com.yoogalu.ncf.core.cache.CompanyCache;
      import com.yoogalu.ncf.core.cache.DealerCache;
      import com.yoogalu.ncf.core.cache.ServiceProviderCache;
      import com.yoogalu.ncf.core.cache.StoreCache;
      import com.yoogalu.ncf.core.entity.AppCustomer;
      import com.yoogalu.ncf.core.entity.Application;
      import com.yoogalu.ncf.core.entity.Company;
      import com.yoogalu.ncf.core.entity.Customer;
      import com.yoogalu.ncf.core.entity.Dealer;
      import com.yoogalu.ncf.core.entity.Invoice;
      import com.yoogalu.ncf.core.entity.ServiceProvider;
      import com.yoogalu.ncf.core.entity.Store;
      import com.yoogalu.ncf.core.util.AppContext;
      import com.yoogalu.ncf.web.seam.Tokens;
      import com.yoogalu.ncf.web.seam.Util;
      import com.yoogalu.ncf.web.seam.bean.UserCredentials;

      @Name("normalCreditApplication")
      @Scope(ScopeType.CONVERSATION)
      @Conversational
      public class NormalCreditApplication implements Serializable {

      private static final long serialVersionUID = FrameworkConstants.SERIAL_VERSION_UID;

      private static final int MAX_SERIAL = 999;

      private static final String APPLICATIONREF = "applicationRef";

      private static final String APPLICANTNAME1 = "applicantName1";

      private static final String APPLICANTNAME2 = "applicantName2";

      private static final String SERIALNO = "serialNo";

      private static final String DEALERNAME = "dealerName";

      private static final String APPFEE = "appFee";

      private static final String APPSTATUS_NEWAPPLICATION = "N";

      private static final String NAMETEMPLATE = "template";

      private static final String PRIVACY = "privacy";

      private static final String ONE = "One";

      private static final String TWO = "Two";

      private static final String APPLICATIONFEE = "applicationFee";

      private static final String NAMEFIELD1VALUE = "________________________________";

      private static final String DATEFIELD1VALUE = "___/___/_____";

      private static final String DATETEXT1VALUE = "Date";

      private static final String NAMEFIELD1 = "nameField1";

      private static final String DATEFIELD1 = "dateField1";

      private static final String DATETEXT1 = "dateText1";

      private static final String NAMEFIELD2 = "nameField2";

      private static final String DATEFIELD2 = "dateField2";

      private static final String DATETEXT2 = "dateText2";

      private Dealer dealer;

      private String surnameSearch;

      private String firstNameSearch;


      private String serialNumberUser;

      private List listPossibleDebtors;

      private boolean serviceProvider;

      private boolean secondApplicant;

      private String idServiceProvider;

      private String companyName;

      private String storeName;

      private String dealerName;

      private Integer numRows;
      private boolean flgPrint;
      private AutoCompleteLocation autoCompleteLocation ;
      @Out(value = Tokens.entityLookup4Application, scope = ScopeType.CONVERSATION)
      private Application application;

      @Out(value = "mapPrint", scope = ScopeType.CONVERSATION, required = false)
      private transient Map<String, String> mapPrint;

      @In(value = Tokens.bean4UserCredentials, scope = ScopeType.SESSION)
      private transient UserCredentials userCredentials;

      @DataModelSelection(value = "listPossibleDebtors")
      private Customer customerSelected;

      @In
      private FacesMessages facesMessages;

      @Begin(join = true, pageflow = "normalCreditApplicationFlow")
      public void beginStandard() {
      initApplication();

      }

      @Begin(join = true, pageflow = "normalCreditApplicationFlow")
      public void beginServProv() {
      initApplication();
      setServiceProvider(true);

      String serviceProviderContractType = Util.getBundledMessageResource(Tokens.SERVICEPROVIDERCONTRACTTYPE);
      getApplication().setContractTypeCode(serviceProviderContractType);

      }

      private void initApplication() {
      this.autoCompleteLocation = new AutoCompleteLocation();

      this.application = new Application();
      this.application.setApplicationDate(new Timestamp(System.currentTimeMillis()));
      this.application.setAppStatus(APPSTATUS_NEWAPPLICATION);
      Customer firstCustomer = new Customer();
      Customer secondCustomer = new Customer();
      AppCustomer firstAppCustomer = new AppCustomer();
      AppCustomer secondAppCustomer = new AppCustomer();
      Invoice invoice = new Invoice();
      firstAppCustomer.setCustomer(firstCustomer);
      firstAppCustomer.setApplicantNo(new Integer(1));

      secondAppCustomer.setCustomer(secondCustomer);
      secondAppCustomer.setApplicantNo(new Integer(2));
      this.application.setPrimaryInvoice(invoice);
      this.application.setApplicant1(firstAppCustomer);
      this.application.setApplicant2(secondAppCustomer);

      if (!userCredentials.isAllStoresAccessor()) {

      this.autoCompleteLocation.setStoreSel(Util.getStoreCodeDashStoreName(userCredentials.getStoreId()));
      this.autoCompleteLocation.setCompanySel(Util.getCompanyCodeDashStoreName(userCredentials.getCompanyId()));
      }
      }

      public void searchPossibleDebtorsbyUser() {
      final List customers;
      customers = Util.getApplicationService().searchCustomerByName(getFirstNameSearch(), getSurnameSearch());
      setListPossibleDebtors(customers);
      this.numRows = customers.size();
      }

      public void searchPossibleDebtorsbySystem() {
      final List customers;
      customers = Util.getApplicationService().searchCustomerByName(
      this.getApplication().getApplicant1().getCustomer().getFirstName(),
      this.getApplication().getApplicant1().getCustomer().getSurname());
      setFirstNameSearch(this.getApplication().getApplicant1().getCustomer().getFirstName());
      setSurnameSearch(this.getApplication().getApplicant1().getCustomer().getSurname());
      setListPossibleDebtors(customers);
      this.numRows = customers.size();
      }

      public void setMapPrint() {

      String nameFile = null;
      String applicationFee = null;
      String valueApplicationFee = null;
      String filePath = null;
      mapPrint = new HashMap<String, String>();
      // Obtain the name of the pdf template

      if (isSecondApplicant()) {
      nameFile = PRIVACY + TWO;

      } else {
      nameFile = PRIVACY + ONE;
      }
      if (getApplication().getContractTypeCode() != null) {
      nameFile = nameFile + getApplication().getContractTypeCode().toUpperCase();
      }

      try {
      filePath = Util.getBundledMessageResource(nameFile);
      } catch (Exception e) {
      filePath = null;
      }

      if (filePath == null) {
      if (getApplication().getContractTypeCode() != null) {
      nameFile = PRIVACY + getApplication().getContractTypeCode().toUpperCase();
      }
      try {
      filePath = Util.getBundledMessageResource(nameFile);
      } catch (Exception e) {
      filePath = null;
      }
      }
      // Obtain the value of applicationFee

      if (getApplication().getContractTypeCode() != null) {
      applicationFee = APPLICATIONFEE + getApplication().getContractTypeCode().toUpperCase();

      }
      try {
      valueApplicationFee = Util.getBundledMessageResource(applicationFee);
      } catch (Exception e) {
      valueApplicationFee = null;
      }
      if (valueApplicationFee == null) {
      try {
      valueApplicationFee = Util.getBundledMessageResource(APPLICATIONFEE);
      } catch (Exception e) {
      valueApplicationFee = null;
      }
      }

      // Set the map to print
      this.mapPrint.put(APPLICATIONREF, this.getDealer().getFranchiseCode() + Tokens.SPACE + Tokens.DASH + Tokens.SPACE
      + getApplication().getPrimaryInvoice().getInvoiceNo().toString());
      this.mapPrint.put(APPLICANTNAME1, getApplication().getApplicant1().getCustomer().getFullName());
      this.mapPrint.put(APPLICANTNAME2, getApplication().getApplicant2().getCustomer().getFullName());
      this.mapPrint.put(SERIALNO, getApplication().getSerialNo());

      this.mapPrint.put(APPFEE, valueApplicationFee);
      this.mapPrint.put(NAMETEMPLATE, filePath);


      if (serviceProvider) {

      String nameField2 = Tokens.SPACE;
      String dateField2 = Tokens.SPACE;
      String dateText2 = Tokens.SPACE;

      if (secondApplicant) {
      nameField2 = NAMEFIELD1VALUE;
      dateField2 = DATEFIELD1VALUE;
      dateText2 = DATETEXT1VALUE;
      // }
      }
      this.mapPrint.put(NAMEFIELD1, NAMEFIELD1VALUE);
      this.mapPrint.put(DATEFIELD1, DATEFIELD1VALUE);
      this.mapPrint.put(DATETEXT1, DATETEXT1VALUE);
      this.mapPrint.put(NAMEFIELD2, nameField2);
      this.mapPrint.put(DATEFIELD2, dateField2);
      this.mapPrint.put(DATETEXT2, dateText2);
      this.mapPrint.put(DEALERNAME, "Dealer: " + this.getDealer().getFranchiseName().toUpperCase()
      + " and Services Dealer: " + getApplication().getServiceProvider().getName().toUpperCase());

      } else {

      this.mapPrint.put(DEALERNAME, this.getDealer().getFranchiseName());

      }

      }

      public boolean validateSecondApplicant() {
      if (!getApplication().getApplicant2().getCustomer().getFirstName().trim().equals(Tokens.BLANK)
      && !getApplication().getApplicant2().getCustomer().getSurname().trim().equals(Tokens.BLANK)) {
      setSecondApplicant(true);
      return true;
      } else if (getApplication().getApplicant2().getCustomer().getFirstName().trim().equals(Tokens.BLANK)
      && getApplication().getApplicant2().getCustomer().getSurname().trim().equals(Tokens.BLANK)
      && getApplication().getApplicant2().getCustomer().getMiddleName().trim().equals(Tokens.BLANK)) {
      setSecondApplicant(false);
      return true;
      } else if (!getApplication().getApplicant2().getCustomer().getFirstName().trim().equals(Tokens.BLANK)
      || !getApplication().getApplicant2().getCustomer().getSurname().trim().equals(Tokens.BLANK)
      || !getApplication().getApplicant2().getCustomer().getMiddleName().trim().equals(Tokens.BLANK)) {
      setSecondApplicant(false);
      facesMessages.add(Util.getBundledMessageResource(Tokens.MSG_INVALIDNAME_SECONDAPPPLICANT));
      }
      return false;
      }

      public boolean validateLocation() {
      try {

      int idDealer = Util.obtainDealerId(this.autoCompleteLocation.getCompanySel(), this.autoCompleteLocation.getStoreSel(), this.autoCompleteLocation.getDealerSel());
      int idCompany = Util.obtainCompanyId(this.autoCompleteLocation.getCompanySel());
      int idStore = Util.obtainStoreId(this.autoCompleteLocation.getCompanySel(), this.autoCompleteLocation.getStoreSel());
      getApplication().setDealerId(null);
      getApplication().setStoreId(null);
      this.setDealerName(null);
      this.setStoreName(null);
      this.setCompanyName(null);

      this.setDealer(null);
      if (idDealer > 0) {

      DealerCache dealerCache = (DealerCache) AppContext.getCache(DealerCache.class.getSimpleName());
      Dealer dealerAux = (Dealer) dealerCache.getEntityById(idDealer);

      StoreCache storeCache = (StoreCache) AppContext.getCache(StoreCache.class.getSimpleName());
      Store storeAux = (Store) storeCache.getEntityById(idStore);

      CompanyCache companyCache = (CompanyCache) AppContext.getCache(CompanyCache.class.getSimpleName());
      Company companyAux = (Company) companyCache.getEntityById(idCompany);

      if (dealerAux != null) {
      getApplication().setDealerId(dealerAux.getId());
      getApplication().setStoreId(dealerAux.getStoreId());
      this.setDealer(dealerAux);
      this.setDealerName(dealerAux.getDepartmentCode() + Tokens.DASH + dealerAux.getFranchiseName());
      this.setStoreName(storeAux.getStoreCode() + Tokens.DASH + storeAux.getName());
      this.setCompanyName(companyAux.getCompanyCode() + Tokens.DASH + companyAux.getName());
      return true;
      }

      }
      facesMessages.add(Util.getBundledMessageResource(Tokens.MSG_INVALID_LOCATION));
      return false;
      } catch (Exception e) {
      facesMessages.add(Util.getBundledMessageResource(Tokens.MSG_INVALID_LOCATION));
      return false;
      }
      }

      public void calculateSerialNumber() {
      double serialNoSyst = Math.random() * MAX_SERIAL;

      getApplication().setSerialNo(getDealer().getDepartmentCode() + (int) serialNoSyst + Tokens.BLANK);
      }

      public boolean validaSerialNumber() {
      if (getSerialNumberUser() != null) {
      if (getSerialNumberUser().equals("111")) { // return
      // getApplication().getSerialNo().equals(getSerialNumberUser());
      return true;
      } else {
      facesMessages.add(Util.getBundledMessageResource(Tokens.MSG_INVALID_SERIALNUMBER));
      return false;
      }

      } else {
      facesMessages.add(Util.getBundledMessageResource(Tokens.MSG_INVALID_SERIALNUMBER));
      return false;
      }
      }

      public boolean validaDefaultPrintPrivacy() {
      if ((Util.getBundledMessageResource(Tokens.DEFAULTPRINTPRIVACY).toUpperCase().equals(Tokens.YES))) {
      return true;
      } else {
      return false;
      }
      }

      public boolean validaInvoiceNo() {

      if (Util.getApplicationService().isUniqueInvoiceNo(this.getDealer(), getApplication().getPrimaryInvoice().getInvoiceNo())) {
      // this.setMsgWrongInvoiceNo(Util.getBundledMessageResource(Tokens.BLANK));
      return true;
      } else {
      // this.setMsgWrongInvoiceNo(Util.getBundledMessageResource(Tokens.MSG_INVALID_INVOICENO));
      facesMessages.add( Util.getBundledMessageResource(Tokens.MSG_INVALID_INVOICENO));
      return false;
      }
      }

      public String getSurnameSearch() {
      return surnameSearch;
      }

      public void setSurnameSearch(String surnameSearch) {
      this.surnameSearch = surnameSearch;
      }

      public String getFirstNameSearch() {
      return firstNameSearch;
      }

      public void setFirstNameSearch(String firstNameSearch) {
      this.firstNameSearch = firstNameSearch;
      }


      public String getSerialNumberUser() {
      return serialNumberUser;
      }

      public void setSerialNumberUser(String serialNumberUser) {
      this.serialNumberUser = serialNumberUser;
      }




      @DataModel
      public List getListPossibleDebtors() {
      return listPossibleDebtors;
      }

      public void setListPossibleDebtors(List listPossibleDebtors) {
      this.listPossibleDebtors = listPossibleDebtors;
      }

      public boolean getServiceProvider() {
      return serviceProvider;
      }

      public void setServiceProvider(boolean serviceProvider) {
      this.serviceProvider = serviceProvider;
      }

      public String getIdServiceProvider() {
      return idServiceProvider;
      }

      public void setIdServiceProvider(String idServiceProvider) {
      this.idServiceProvider = idServiceProvider;
      }

      public boolean isSecondApplicant() {
      return secondApplicant;
      }

      public void setSecondApplicant(boolean secondApplicant) {
      this.secondApplicant = secondApplicant;
      }

      public Customer getCustomerSelected() {
      return customerSelected;
      }

      public void setCustomerSelected(Customer customerSelected) {
      this.customerSelected = customerSelected;
      }

      public void setSelectCustomerOne() {
      if (customerSelected != null) {
      getApplication().getApplicant1().setCustomer(customerSelected);
      if (customerSelected.getLatestAppCustomer() != null) {
      Application app = Util.getApplicationService().findApplicationById(
      customerSelected.getLatestAppCustomer().getApplication().getId());
      application.getApplicant1().copyFrom(app.getApplicant1());
      }

      }
      }

      public Application getApplication() {
      return application;
      }

      public void setApplication(Application application) {
      this.application = application;
      }

      public void createApplication() {

      getApplication().setStoreId(getDealer().getStoreId());
      getApplication().setDealerId(getDealer().getId());
      getApplication().setFranchiseCode(getDealer().getFranchiseCode());

      getApplication().getApplicant1().setApplication(getApplication());
      getApplication().getPrimaryInvoice().setDealerId(getApplication().getDealerId());
      getApplication().getPrimaryInvoice().setApplication(getApplication());
      getApplication().getPrimaryInvoice().setStoreId(getApplication().getStoreId());

      if (isSecondApplicant()) {
      getApplication().getApplicant2().setApplication(getApplication());

      } else {
      getApplication().setApplicant2(null);
      }

      Util.getApplicationService().saveApplication(getApplication());

      }

      public List getListServiceProviders() {

      ServiceProviderCache serviceProviderCache = (ServiceProviderCache) AppContext.getCache(ServiceProviderCache.class
      .getSimpleName());
      List serviceProviders = (List) serviceProviderCache.getEntityList();

      return serviceProviders;

      }

      public void onSelectServiceProvider(ValueChangeEvent event) {
      ServiceProvider serProvider = (ServiceProvider) event.getNewValue();
      getApplication().setServiceProvider(serProvider);

      }


      public void setPrinting() {
      this.setFlgPrint(true);
      }

      public void setNoPrinting() {
      this.setFlgPrint(false);
      }

      public Dealer getDealer() {
      return dealer;
      }

      public void setDealer(Dealer dealer) {
      this.dealer = dealer;
      }

      public String getCompanyName() {
      return companyName;
      }

      public void setCompanyName(String companyName) {
      this.companyName = companyName;
      }

      public String getDealerName() {
      return dealerName;
      }

      public void setDealerName(String dealerName) {
      this.dealerName = dealerName;
      }

      public String getStoreName() {
      return storeName;
      }

      public void setStoreName(String storeName) {
      this.storeName = storeName;
      }

      public boolean isFlgPrint() {
      return flgPrint;
      }

      public void setFlgPrint(boolean flgPrint) {
      this.flgPrint = flgPrint;
      }

      public AutoCompleteLocation getAutoCompleteLocation() {
      return autoCompleteLocation;
      }

      public void setAutoCompleteLocation(AutoCompleteLocation autoCompleteLocation) {
      this.autoCompleteLocation = autoCompleteLocation;
      }

      public Integer getNumRows() {
      return numRows;
      }

      public void setNumRows(Integer numRows) {
      this.numRows = numRows;
      }

      }

      *****************

      My page

      <?xml version="1.0" encoding="UTF-8"?>
      <jsp:root xmlns="http://www.w3.org/1999/xhtml"
      xmlns:a4j="https://ajax4jsf.dev.java.net/ajax"
      xmlns:a="https://ajax4jsf.dev.java.net/ajax"
      xmlns:c="http://java.sun.com/jstl/core"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:jsp="http://java.sun.com/JSP/Page"
      xmlns:rich="http://richfaces.ajax4jsf.org/rich"
      xmlns:s="http://jboss.com/products/seam/taglib"
      xmlns:ui="http://java.sun.com/jsf/facelets" version="2.0">
      <h:messages globalOnly="true" styleClass="alertMsgBold" />
      <h:form id='normalApp'>


      <s:validateAll>


      <a4j:region id="autocomplete">



      <h:outputText id="idHeaderLocation"
      value="#{msg['creditApplication.headerLocation']}"
      styleClass="header1" />


      <c:if test="#{userCredentials.allStoresAccessor}">



      ALLSTORE=TRUE<h:outputText for="company"
      value="#{msg['creditApplication.company']}" />asfasf
      <a4j:outputPanel id="companyPanel">
      <a4j:region id="companyRegion" renderRegionOnly="false">
      <h:inputText
      value="#{normalCreditApplication.autoCompleteLocation.companySel}"
      size="50" required="true" id="company" />

      <rich:suggestionbox for="company"
      suggestionAction="#{normalCreditApplication.autoCompleteLocation.autocompleteCompany}"
      var="company" height="200" width="250" requestDelay="350"
      focus="store" ignoreDupResponses="true">
      <a4j:support event="onselect"
      action="#{normalCreditApplication.autoCompleteLocation.onSelectCompany}"
      reRender="storePanel,dealerPanel"
      oncomplete="setFocus('normalApp:store');" />
      <h:column>
      <h:outputText value="#{company.companyCode}-#{company.name}" />
      </h:column>
      </rich:suggestionbox>
      </a4j:region>
      </a4j:outputPanel>
      <a4j:outputPanel ajaxRendered="true">
      <h:message for="company" styleClass="alertMsg" />
      </a4j:outputPanel>

      </c:if>
      <c:if test="#{!userCredentials.allStoresAccessor}">


      <h:outputText for="company"
      value="#{msg['creditApplication.company']}" />
      <h:outputText for="company"
      value="#{normalCreditApplication.autoCompleteLocation.companySel}" />



      </c:if>
      <c:if test="#{userCredentials.allStoresAccessor}">


      <h:outputText for="store"
      value="#{msg['creditApplication.store']}" />
      <a4j:outputPanel id="storePanel">
      <a4j:region id="storeRegion" renderRegionOnly="false">
      <h:inputText
      value="#{normalCreditApplication.autoCompleteLocation.storeSel}"
      size="50" required="true" id="store" />
      <rich:suggestionbox for="store" requestDelay="350"
      suggestionAction="#{normalCreditApplication.autoCompleteLocation.autocompleteStore}"
      var="store" height="200" width="250" focus="dealer">
      <a4j:support event="onselect"
      action="#{normalCreditApplication.autoCompleteLocation.onSelectStore}"
      reRender="dealerPanel"
      oncomplete="setFocus('normalApp:dealer');" />
      <h:column>
      <h:outputText value="#{store.storeCode}-#{store.name}" />
      </h:column>
      </rich:suggestionbox>
      </a4j:region>
      </a4j:outputPanel>
      <a4j:outputPanel ajaxRendered="true">
      <h:message for="store" styleClass="alertMsg" />
      </a4j:outputPanel>

      </c:if>
      <c:if test="#{!userCredentials.allStoresAccessor}">


      <h:outputText for="store"
      value="#{msg['creditApplication.store']}" />
      <h:outputText for="store"
      value="#{normalCreditApplication.autoCompleteLocation.storeSel}" />



      </c:if>


      <h:outputText for="dealer"
      value="#{msg['creditApplication.dealer']}" />
      <a4j:outputPanel id="dealerPanel">

      <h:inputText
      value="#{normalCreditApplication.autoCompleteLocation.dealerSel}"
      size="50" id="dealer" required="true" />
      <rich:suggestionbox for="dealer" requestDelay="350"
      suggestionAction="#{normalCreditApplication.autoCompleteLocation.autocompleteDealer}"
      var="dealer" height="200" width="250">
      <a4j:support event="onselect"
      oncomplete="setFocus('normalApp:invoice');" />
      <h:column>
      <h:outputText
      value="#{dealer.departmentCode}-#{dealer.franchiseName}" />
      </h:column>
      </rich:suggestionbox>

      </a4j:outputPanel>
      <a4j:outputPanel ajaxRendered="true">
      <h:message for="dealer" styleClass="alertMsg" />
      </a4j:outputPanel>


      </a4j:region>





      <h:outputText id="headerApplicationDetails"
      value="#{msg['creditApplication.headerApplicationDetails']}"
      styleClass="header1" />



      <h:outputText for="invoice"
      value="#{msg['creditApplication.invoice']}" />
      <h:inputText id="invoice"
      value="#{normalCreditApplication.application.primaryInvoice.invoiceNo}"
      required="true"></h:inputText>
      <h:message for="invoice" styleClass="alertMsg" />





      <h:outputText for="headerFirstApplicant"
      value="#{msg['creditApplication.headerFirstApplicant']}"
      styleClass="header1" />



      <h:outputText for="firstName"
      value="#{msg['creditApplication.firstName']}" />
      <h:inputText id="firstName"
      value="#{normalCreditApplication.application.applicant1.customer.firstName}"
      required="true"></h:inputText>
      <h:message for="firstName" styleClass="alertMsg" />



      <h:outputText for="middleName"
      value="#{msg['creditApplication.middleName']}" />
      <h:inputText id="middleName"
      value="#{normalCreditApplication.application.applicant1.customer.middleName}"></h:inputText>
      <h:message for="middleName" styleClass="alertMsg" />



      <h:outputText for="surname"
      value="#{msg['creditApplication.surname']}" />
      <h:inputText id="surname"
      value="#{normalCreditApplication.application.applicant1.customer.surname}"
      required="true"></h:inputText>
      <h:message for="surname" styleClass="alertMsg" />





      <h:outputText for="headerSecondApplicant"
      value="#{msg['creditApplication.headerSecondApplicant']}"
      styleClass="header1" />



      <h:outputText for="firstNameSecond"
      value="#{msg['creditApplication.firstName']}" />
      <h:inputText id="firstNameSecond"
      value="#{normalCreditApplication.application.applicant2.customer.firstName}"></h:inputText>
      <h:message for="firstNameSecond" styleClass="alertMsg" />



      <h:outputText for="middleNameSecond"
      value="#{msg['creditApplication.middleName']}" />
      <h:inputText id="middleNameSecond"
      value="#{normalCreditApplication.application.applicant2.customer.middleName}"></h:inputText>
      <h:message for="middleNameSecond" styleClass="alertMsg" />



      <h:outputLabel for="surnameSecond"
      value="#{msg['creditApplication.surname']}" />
      <h:inputText id="surnameSecond"
      value="#{normalCreditApplication.application.applicant2.customer.surname}"></h:inputText>
      <h:message for="surnameSecond" styleClass="alertMsg" />



      <f:subview rendered="#{normalCreditApplication.serviceProvider}">





      <h:outputText id="headerServiceProvider"
      value="#{msg['creditApplication.headerServiceProvider']}"
      styleClass="header1" />




      <h:outputLabel for="serviceProv"
      value="#{msg['creditApplication.serviceProvider']}" />
      <h:selectOneMenu
      value="#{normalCreditApplication.application.serviceProvider}"
      style="width:280px"
      valueChangeListener="#{normalCreditApplication.onSelectServiceProvider}"
      id="serviceProviderId">
      <s:selectItems
      value="#{normalCreditApplication.listServiceProviders}"
      var="serviceProvider" onchange="submit()" immediate="true"
      label="#{serviceProvider.name}" />
      <f:converter converterId="serviceProviderConverter" />
      </h:selectOneMenu>
      <h:message for="serviceProv"
      styleClass="alertMsg" />



      </f:subview>

      </s:validateAll>
      <h:commandButton value="#{msg['creditApplication.next']}"
      action="next" styleClass="buttom" />
      </h:form>





      </jsp:root>


      The errror:

      2007-08-06 09:15:04 StandardWrapperValve[FacesServlet]: Servlet.service() for servlet FacesServlet threw exception
      javax.faces.el.EvaluationException: /normal-application.jspx @13,72 rendered="#{normalCreditApplication.serviceProvider}": Exception getting value of property serviceProvider of base of type : com.yoogalu.ncf.web.seam.bean.NormalCreditApplication_$$_javassist_2
      at com.sun.facelets.el.LegacyValueBinding.getValue(LegacyValueBinding.java:60)
      at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:1078)
      at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:601)
      at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:605)
      at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:605)
      at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:138)
      at org.ajax4jsf.framework.ajax.AjaxViewRoot.access$001(AjaxViewRoot.java:53)
      at org.ajax4jsf.framework.ajax.AjaxViewRoot$1.invokeRoot(AjaxViewRoot.java:256)
      at org.ajax4jsf.framework.ajax.JsfOneOneInvoker.invokeOnRegionOrRoot(JsfOneOneInvoker.java:53)
      at org.ajax4jsf.framework.ajax.AjaxContext.invokeOnRegionOrRoot(AjaxContext.java:191)
      at org.ajax4jsf.framework.ajax.AjaxViewRoot.processDecodes(AjaxViewRoot.java:272)
      at org.apache.myfaces.lifecycle.ApplyRequestValuesExecutor.execute(ApplyRequestValuesExecutor.java:32)
      at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
      at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
      at javax.faces.webapp.FacesServlet.service(FacesServlet.java:139)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
      at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
      at com.yoogalu.ncf.web.servlet.Boilerplate.doFilter(Boilerplate.java:42)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
      at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:127)
      at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:277)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
      at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:264)
      at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
      at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
      at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
      at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:110)
      at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
      at org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81)
      at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
      at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:217)
      at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
      at org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java:106)
      at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
      at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:229)
      at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
      at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:148)
      at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
      at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
      at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
      at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
      at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
      at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
      at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
      at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
      at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
      at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
      at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
      at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
      at java.lang.Thread.run(Thread.java:595)
      Caused by: javax.faces.el.EvaluationException: Bean: com.yoogalu.ncf.web.seam.bean.NormalCreditApplication_$$_javassist_2, property: serviceProvider
      at org.apache.myfaces.el.PropertyResolverImpl.getProperty(PropertyResolverImpl.java:461)
      at org.apache.myfaces.el.PropertyResolverImpl.getValue(PropertyResolverImpl.java:85)
      at com.sun.facelets.el.LegacyELContext$LegacyELResolver.getValue(LegacyELContext.java:141)
      at com.sun.el.parser.AstValue.getValue(AstValue.java:118)
      at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:192)
      at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71)
      at com.sun.facelets.el.LegacyValueBinding.getValue(LegacyValueBinding.java:56)
      ... 66 more
      Caused by: java.lang.reflect.InvocationTargetException
      at sun.reflect.GeneratedMethodAccessor279.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:585)
      at org.apache.myfaces.el.PropertyResolverImpl.getProperty(PropertyResolverImpl.java:457)
      ... 72 more
      Caused by: org.jboss.seam.NoConversationException: no long-running conversation for @Conversational bean: normalCreditApplication
      at org.jboss.seam.interceptors.ConversationalInterceptor.aroundInvoke(ConversationalInterceptor.java:55)
      at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:69)
      at org.jboss.seam.interceptors.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:27)
      at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:69)
      at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:103)
      at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:151)
      at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:87)
      at com.yoogalu.ncf.web.seam.bean.NormalCreditApplication_$$_javassist_2.getServiceProvider(NormalCreditApplication_$$_javassist_2.java)
      ... 76 more