The difference is that showNext doesn't depend on values in the request-scoped bean. It depends on values in the component tree (which is the same as adding a value to the component tree using t:saveState).
On 8/12/05, Gregg D Bolinger <[EMAIL PROTECTED]> wrote: > Ok, I've been doing a little bit more research and I don't think it's > as simple as "it doesn't work that way". I was going through JSF In > Action looking for something else and ran across this example. You'll > have to forgive the crappy formatting. I copied this from the PDF. > However, if you'll notice, the bean is in request scope. There are > previous and next buttons that are rendered depedning on if there are > records before or after the current index. They use method binding to > actionListener methods in the backing bean. So according to the > statements from you this shouldn't work either. But I know it does. > > <managed-bean> > <description>Pages through history list.</description> > <managed-bean-name>showHistoryBean</managed-bean-name> > <managed-bean-class> > org.jia.ptrack.web.ShowHistoryBean > </managed-bean-class> > <managed-bean-scope>request</managed-bean-scope> > <managed-property> > <property-name>rowsPerPage</property-name> > <value>3</value> > </managed-property> > <managed-property> > <property-name>visit</property-name> > <value>#{sessionScope.visit}</value> > </managed-property> > <managed-property> > <property-name>projectCoordinator</property-name> > <value>#{applicationScope.projectCoordinator}</value> > </managed-property> > <managed-property> > <property-name>statusCoordinator</property-name> > <value>#{applicationScope.statusCoordinator}</value> > </managed-property> > <managed-property> > <property-name>userCoordinator</property-name> > <value>#{applicationScope.userCoordinator}</value> > </managed-property> > </managed-bean> > > <h:dataTable cellpadding="5" styleClass="table-background" > value="#{showHistoryBean.currentProjectHistory}" > var="operation" > binding="#{showHistoryBean.historyDataTable}" > rows="#{showHistoryBean.rowsPerPage}"> > <h:column> > <h:panelGrid columns="1" width="100%" border="1" > styleClass="table-even-row"> > ... > <h:outputText value="#{operation.timestamp}"> > <f:convertDateTime dateStyle="full" timeStyle="short"/> > </h:outputText> > <h:outputText > value="#{operation.fromStatus} -> #{operation.toStatus}"/> > <h:outputText value="(#{operation.user.role})"/> > ... > <h:outputText value="Comments:"/> > <h:outputText value="#{operation.comments}" > styleClass="project-data"/> > ... > </h:panelGrid> > </h:column> > <f:facet name="footer"> > <h:panelGroup> > <h:commandLink actionListener="#{showHistoryBean.previous}" > rendered="#{showHistoryBean.showPrevious}" > style="padding-right: 5px;"> > <h:outputText value="Previous"/> > </h:commandLink> > <h:commandLink actionListener="#{showHistoryBean.next}" > rendered="#{showHistoryBean.showNext}"> > <h:outputText value="Next"/> > </h:commandLink> > </h:panelGroup> > </f:facet> > </h:dataTable> > > public class ShowHistoryBean extends BaseBean > { > private int rowsPerPage = 5; > private UIData historyDataTable; > public ShowHistoryBean() > { > } > public UIData getHistoryDataTable() > { > return historyDataTable; > } > public void setHistoryDataTable(UIData historyDataTable) > { > this.historyDataTable = historyDataTable; > } > public int getRowsPerPage() > { > return rowsPerPage; > } > public void setRowsPerPage(int rowsPerPage) > { > this.rowsPerPage = rowsPerPage; > } > public List getCurrentProjectHistory() > { > return getVisit().getCurrentProject().getHistory(); > } > public boolean getShowNext() > { > return (historyDataTable.getFirst() + > rowsPerPage) < > getCurrentProjectHistory().size(); > } > public boolean getShowPrevious() > { > return (historyDataTable.getFirst()— > rowsPerPage) >= 0; > } > public void next(ActionEvent actionEvent) > { > int newFirst = > historyDataTable.getFirst() + rowsPerPage; > if (newFirst < > getCurrentProjectHistory().size()) > { > historyDataTable.setFirst(newFirst); > } > } > public void previous(ActionEvent actionEvent) > { > int newFirst = > historyDataTable.getFirst() - rowsPerPage; > if (newFirst >= 0) > { > historyDataTable.setFirst(newFirst); > } > } > } > > On 8/12/05, Martin Marinschek <[EMAIL PROTECTED]> wrote: > > You are welcome! > > > > regards, > > > > Martin > > > > On 8/12/05, Gregg D Bolinger <[EMAIL PROTECTED]> wrote: > > > BTW - I used saveState for the updateMode and it works good. I can't > > > think you all enough for digging through this for me. > > > > > > Gregg > > > > > > On 8/12/05, Gregg D Bolinger <[EMAIL PROTECTED]> wrote: > > > > Ok guys. Thanks for the help, although it wasn't what I was looking > > > > for. I really appriciate it. I'll look into using saveState to fix > > > > my issue. I really don't want this in session scope because when I > > > > come back to the page, it requires too much cleanup. > > > > > > > > Thanks again. > > > > > > > > Gregg > > > > > > > > On 8/12/05, Mike Kienenberger <[EMAIL PROTECTED]> wrote: > > > > > If you create the bean request scope, the value of rendered for your > > > > > update button is always false, from what code you've posted. > > > > > > > > > > So even though it was true long enough to draw the button on your html > > > > > response, it's now out of sync when you resubmit a request. Your > > > > > html treats it as if it were "rendered", but your server state shows > > > > > it as not-rendered. Actions submitted from non-rendered buttons are > > > > > ignored (I'm basing this on how everything about a non-rendered > > > > > component is ignored, not because I've actually researched and proven > > > > > the issue). > > > > > > > > > > -Mike > > > > > > > > > > On 8/12/05, Gregg D Bolinger <[EMAIL PROTECTED]> wrote: > > > > > > Technically, the problem isn't solved yet. Why won't this work in > > > > > > request scope? actionListeners don't get brand new beans in the > > > > > > true > > > > > > sense of a page being requested for the very first time. If I have > > > > > > an > > > > > > inputText with a name in it and an actionListener on a button, when > > > > > > I > > > > > > press that button, the text is still in the textfield when the page > > > > > > refreshes. The point is, when in request scope, the commandButton > > > > > > is > > > > > > not registering the binding on the method for the non-rendered > > > > > > component, even when it is set to render on refresh. That doesn't > > > > > > make sense? > > > > > > > > > > > > Can one of you try it in request scope and tell me what happens? > > > > > > > > > > > > Gregg > > > > > > > > > > > > On 8/12/05, Mike Kienenberger <[EMAIL PROTECTED]> wrote: > > > > > > > Yeah, obviously you knew what you were doing since you helped > > > > > > > solve > > > > > > > the problem :) > > > > > > > Me and my big mouth :) > > > > > > > > > > > > > > -Mike > > > > > > > > > > > > > > > > > > > > > On 8/12/05, Martin Marinschek <[EMAIL PROTECTED]> wrote: > > > > > > > > I am conentrating very much on exactly this aspect ;) > > > > > > > > > > > > > > > > regards, > > > > > > > > > > > > > > > > Martin > > > > > > > > > > > > > > > > On 8/12/05, Mike Kienenberger <[EMAIL PROTECTED]> wrote: > > > > > > > > > I wrote, > > > > > > > > > >> What happens if you dump the render statement? > > > > > > > > > > > > > > > > > > On 8/12/05, Gregg D Bolinger <[EMAIL PROTECTED]> wrote: > > > > > > > > > >Then the update method is called just fine. > > > > > > > > > > > > > > > > > > I'd say this it the point to concentrate on. Not sure why > > > > > > > > > you and > > > > > > > > > Martin are looking at other things. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > > > > > > > > http://www.irian.at > > > > > > > > Your JSF powerhouse - > > > > > > > > JSF Trainings in English and German > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > http://www.irian.at > > Your JSF powerhouse - > > JSF Trainings in English and German > > >