The PartialFor ~only~ renders nodes with an id matching the incoming request
id, if for whatever reason doing a toString() on the object binding for the
current value doesn't exactly match then it won't find your node, without a
key id at least.
Maybe this could be improved somehow.
On 1/11/06, Chris Chiappone <[EMAIL PROTECTED]> wrote:
>
> Jesse -
> Thanks a lot for all your help, that did the trick. Although I wish I
> knew why that made the difference. I guess I don't understand how the
> PartialFor varied from the regular For.
>
> Thanks again,
> ~chris
>
> On 1/11/06, Jesse Kuhnert <[EMAIL PROTECTED]> wrote:
> > I'm fairly certain now that the keyProvider will solve your delimna,
> either
> > that or use a normal For component and not PartialFor.
> >
> > On 1/11/06, Chris Chiappone <[EMAIL PROTECTED]> wrote:
> > >
> > > Update... It seems if I refresh the page then the selected items show
> > >
> > > On 1/11/06, Chris Chiappone <[EMAIL PROTECTED]> wrote:
> > > > Still Confused. I know that my selectedItems collection contains my
> > > > object, yet the currSelected never returns true. Actually it seems
> to
> > > > only get called once when the page loads. Shouldn't
> isCurrSelected()
> > > > get executed everytime linkToggle listener gets called?
> > > > I'll include my code again with some mods since last time:
> > > >
> > > > public void toggleCase(IRequestCycle irc) {
> > > > String caseid = (String) irc.getListenerParameters
> ()[0];
> > > > TrCase trCase = getCaseHome().findCaseById(
> Long.parseLong
> > > (caseid));
> > > > Collection<TrCase> c = getSelectedItems();
> > > >
> > > > boolean contains = containsItem(c,
> trCase.getIdAsString
> > > ());
> > > >
> > > > if (contains) {
> > > > log.info("Selected Item contains Case #"+
> > > trCase.getId());
> > > > c.remove(trCase.getIdAsString());
> > > > } else {
> > > > log.info("Selected Item doesn't contain Case
> #"+
> > > trCase.getId());
> > > > c.add(trCase);
> > > > }
> > > > setSelectedItems(c);
> > > > AjaxWebRequest ajax = (AjaxWebRequest) irc
> > > > .getAttribute(
> AjaxWebRequest.AJAX_REQUEST
> > > );
> > > > if (ajax != null)
> > > > ajax.addStatusResponse("Case selected..");
> > > >
> > > > }
> > > >
> > > > public Collection<TrCase> getCases(){
> > > > log.info("Getting cases from DB...");
> > > > List cases = new ArrayList<TrCase>(getCaseHome()
> > >
> > .findCasesBySupportId(getVisitObject().getPortaluser()
> > > > .getSupportid()));
> > > > return cases;
> > > > }
> > > >
> > > > private boolean containsItem(Collection<TrCase> c, String
> item){
> > > > Iterator<TrCase> it = c.iterator();
> > > > boolean contains = false;
> > > > while(it.hasNext()){
> > > > TrCase test = it.next();
> > > >
> > > > if(item.equals(test.getIdAsString())){
> > > > contains = true;
> > > > continue;
> > > > }
> > > > }
> > > > return contains;
> > > > }
> > > >
> > > > //public abstract Collection<TrCase> getCases();
> > > > //public abstract void setCases(Collection<TrCase> cases);
> > > > @Persist
> > > > public abstract Collection<TrCase> getSelectedItems();
> > > > public abstract void setSelectedItems(Collection<TrCase>
> > > selectedItems);
> > > >
> > > >
> > > > public void openCaseListener(IRequestCycle cycle) {
> > > > cycle.activate(getOpenCasePage());
> > > > }
> > > >
> > > > public abstract boolean isOpenCases();
> > > > public abstract void setOpenCases(boolean openCases);
> > > >
> > > > public boolean isCurrSelected() {
> > > > boolean contains = containsItem(getSelectedItems(),
> > > > getCurrCase().getIdAsString());
> > > > log.info("Current Selected returns "+ contains);
> > > > return contains;
> > > > }
> > > >
> > > > Annotations in the same class:
> > > > @Component(id="foreachCase", type="tacos:PartialFor",
> bindings =
> > > {
> > > > "source=cases", "value=currCase",
> > > > "evenOdd=ognl:page.beans.evenOdd"})
> > > > public abstract PartialForBean getForeachCase();
> > > >
> > > > @Component(id="linkToggle", type="tacos:AjaxDirectLink",
> > > > bindings = {"listener=listener:toggleCase",
> > > > "parameters=ognl:currCase.idAsString",
> > > > "updateComponents=ognl:{'selectedCases',
> > > currCase.idAsString}",
> > >
> >
> > "effects=template:{highlight:{selectedCases:'[255,255,184],
> > > 500,
> > > > 500','${currCase}':'[255,255,184], 500, 500'}}",
> > > > "statusElement=literal:status"})
> > > > public abstract AjaxDirectLink getLinkToggle();
> > > >
> > > > And the html:
> > > >
> > > > <div jwcid="[EMAIL PROTECTED]"
> id="selectedCases"><span
> > >
> > jwcid="@If"
> > > condition="ognl:not selectedItems.empty">
> > > > <h3>Selected
> > > Cases</h3>
> > > > <ul>
> > > > <li
> > > jwcid="@tacos:PartialFor" source="ognl:selectedItems"
> > >
> >
> > value="ognl:selectItem"
> > > element="li"><span jwcid="@Insert"
> > >
> > >
> >
> > value="ognl:
> > > selectItem.id" /></li>
> > > > </ul>
> > > > </span></div>
> > > > <div
> > > id="status"></div>
> > > > <div
> > > id="cases"><span jwcid="foreachCase">
> > > > <div
> jwcid="@Any"
> > > class="ognl:beans.evenOdd.next"
> > >
> > id="ognl:
> > > currCase.id">
> > > >
> > > > <div><a
> > > jwcid="linkToggle" class="toggle"> <span jwcid="@Insert"
> > >
> >
> > value="ognl:currSelected
> > > ? 'Hide' : 'Details'" /></a> <span
> > >
> >
> > jwcid="@Insert"
> > > value="ognl:currCase.id"
> > >
> >
> > class="ognl:currSelected
> > > ? 'detailHeading' : 'heading'" /></div>
> > > >
> > > > <span
> jwcid="@If"
> > > condition="ognl:currSelected">
> > > > <div
> > > class="caseDetail">
> > > > <div
> > > class="acase"><!-- <img jwcid="flagImage" width="34"
> > > > height="18" />--><br />
> > > > <span
> > > jwcid="@Insert" value="ognl:currCase.id" /></div>
> > > >
> > > >
> > > > On 1/11/06, Jesse Kuhnert <[EMAIL PROTECTED]> wrote:
> > > > > You shuold be able to,but are now getting into an area that is
> > > anyone's
> > > > > guess. If you can provide me a web address to hit your page in, or
> a
> > > very
> > > > > very easy to deploy web-app I can look further into it and make
> > > appropriate
> > > > > documentation and/or library changes based on what you're running
> > > into..
> > > > >
> > > > > On 1/11/06, Edgar Chan Carrillo <[EMAIL PROTECTED]>
> wrote:
> > > > > >
> > > > > > Thanks for the response Jesse.
> > > > > > Yes.I think it is.
> > > > > > My page starts with a search option and an empty list...I do a
> > > search and
> > > > > > render the result using PartialFor (a list of divs with ids
> > > corresponding
> > > > > > of
> > > > > > the ids of the objects'result query).
> > > > > > Each generated div include an AjaxDirectLink to show aditional
> info
> > > for
> > > > > > the
> > > > > > element.
> > > > > >
> > > > > > The firefox dom inspector correctly shows the generated divs and
> > > ids, no
> > > > > > matter how many times i perform the search. I think that means
> the
> > > dom
> > > > > > objects already exists in the page by that time.
> > > > > > Can i do this?
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > > --
> > > > ~chris
> > > >
> > >
> > >
> > > --
> > > ~chris
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, e-mail: [EMAIL PROTECTED]
> > >
> > >
> >
> >
>
>
> --
> ~chris
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>