Outjected @DataModelSelection value lagging?
mail.micke Jun 1, 2007 9:31 AMHi
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