4 Replies Latest reply on Jun 4, 2007 4:36 AM by Mikael Andersson

    Outjected @DataModelSelection value lagging?

    Mikael Andersson Master

      Hi

      Not sure what I'm doing wrong, but the outjected value for a data model selection is lagging for me.
      By lagging I mean that if I click one row and then another row, the outjected datamodel selection after the second row click is the object for the first click.

      But if I get the value via a getter on the backing bean I get the correct object after the second click.

      Anyone have any ideas of what is going on (I'm new to seam ).

      Configuration:
      myfaces 1.1.5
      facelets 1.2
      seam 1.2.1.GA
      tomcat 5

      Managed bean code:

      
      @Name("riskAddonBacking")
      @Scope( ScopeType.CONVERSATION)
      public class CountryRiskAddonBacking implements Serializable{
      
       /**
       *
       */
       private static final long serialVersionUID = 1L;
      
       @DataModel
       private List<CountryRiskAddonBean> searchResults;
      
       @DataModelSelection("searchResults")
       @Out(required=false)
       private CountryRiskAddonBean selectedItem;
      
      
      
       private String searchPattern;
      
       @Begin(pageflow="countryaddon")
       public void startPageFlow(){
      
       }
      
       public String performSearch(){
      
       int nbrHits = RandomUtils.nextInt()%10;
       List<CountryRiskAddonBean> tmpList = new ArrayList<CountryRiskAddonBean>(nbrHits);
       for(int i=0; i<nbrHits; i++ ){
       CountryRiskAddonBean cab = new CountryRiskAddonBean();
       cab.setTicketNumber("RSK-" + (RandomUtils.nextInt()%10000) );
       cab.setCptyName("CptyXYZ");
       cab.setCountryOfRisk("SWE");
       tmpList.add( cab );
       }
       searchResults = tmpList;
      
       return null;
       }
      
       public String save(){
       System.out.println("SAAAAAAVVVVVVIIIIIIIIINNNNNNNNGGGGGGGG to db");
      
       return "";
       }
      
       public String getSearchPattern() {
       return searchPattern;
       }
      
       public void setSearchPattern(String searchPattern) {
       this.searchPattern = searchPattern;
       }
      
       public CountryRiskAddonBean getSelectedItem() {
       return selectedItem;
       }
      
       public void setSelectedItem(CountryRiskAddonBean selectedItem) {
       this.selectedItem = selectedItem;
       }
      
      }
      



      xhtml code:

      <ui:composition template="/WEB-INF/layout/template.xhtml">
       <ui:param name="title" value="Pageflow Start"/>
      
       <ui:define name="body">
       <p>
       Conversation id: #{conversation.id}
       </p>
       <p>
       Selected item:<h:outputText value="#{selectedItem.ticketNumber}" rendered="#{not empty selectedItem}"/>
       </p>
       <p>
       Selected item (via getter):<h:outputText value="#{riskAddonBacking.selectedItem.ticketNumber}" rendered="#{not empty riskAddonBacking.selectedItem}"/>
       </p>
       <h:form>
       <s:decorate>
       <h:inputText id="srchPatt" value="#{riskAddonBacking.searchPattern}" required="true"/>
       </s:decorate>
      
       <s:button action="#{riskAddonBacking.performSearch}" value="Search"/>
      
       <h:outputText value="Found #{searchResults.rowCount} hits"
       rendered="#{searchResults.rowCount > 0}"/>
       </h:form>
      
      
       <h:form rendered="#{not empty searchResults}">
       <h:dataTable value="#{searchResults}"
       var="_item">
       <h:column>
       <f:facet name="header">
       Ticket Number
       </f:facet>
       #{_item.ticketNumber}
       </h:column>
       <h:column>
       <f:facet name="header">
       Counterparty
       </f:facet>
       #{_item.cptyName}
       </h:column>
       <h:column>
       <f:facet name="header">
       Country of Risk
       </f:facet>
       #{_item.countryOfRisk}
       </h:column>
       <h:column>
       <f:facet name="header">
       Risk Addon
       </f:facet>
       #{_item.riskAddon}
       </h:column>
       <h:column>
       <f:facet name="header">
       Add/Edit
       </f:facet>
      
       <s:link action="edit" value="Edit" rendered="#{_item.riskAddon > 0}" />
       <s:link action="edit" value="Add" rendered="#{_item.riskAddon == 0}"/>
       |<s:link action="blah" value="Refresh"/>
       </h:column>
       </h:dataTable>
       <!--
       <rich:dataTable value="#{searchResults}"
       var="_item">
       <rich:column>
       <f:facet name="header">
       Ticket Number
       </f:facet>
       #{_item.ticketNumber}
       </rich:column>
       <rich:column>
       <f:facet name="header">
       Counterparty
       </f:facet>
       #{_item.cptyName}
       </rich:column>
       <rich:column>
       <f:facet name="header">
       Country of Risk
       </f:facet>
       #{_item.countryOfRisk}
       </rich:column>
       <rich:column>
       <f:facet name="header">
       Risk Addon
       </f:facet>
       #{_item.riskAddon}
       </rich:column>
       <rich:column>
       <f:facet name="header">
       Add/Edit
       </f:facet>
      
       <s:link action="edit" value="Edit" rendered="#{_item.riskAddon > 0}" />
       <s:link action="edit" value="Add" rendered="#{_item.riskAddon == 0}"/>
       </rich:column>
       </rich:dataTable>
       -->
       </h:form>
      
       </ui:define>
      </ui:composition>
      



      Cheers,
      Mike