Hello Norbi, Sorry for the delay, but have been working on other stuff ...
I set the volatile parameter to "true", but didn't make any difference. I replaced the @For with a @Foreach and now its working! On 26/06/06, Norbert Sándor <[EMAIL PROTECTED]> wrote:
Try setting parameter volatile to "true". Regards, Norbi Jabbar wrote: > Hello all, > > I've got two @For loops inside a @Form tag. Each @For loop is printing > the part of the contents of the MeterCB class, two text fields and one > checkbox. During the rewind process tapestry is not recognizing the > fact that checkboxes in the second @For loop are being selected. > > I've already spent too much time trying to fix this problem :( has any > body fixed this problem or has a work around? > > I've enclosed the source code ... > > --------------------------------------------------------------------------------------- > > permissions.java > package com.technolog.page; > > import java.util.ArrayList; > import java.util.List; > import java.util.Vector; > > import org.apache.tapestry.IRequestCycle; > import org.apache.tapestry.annotations.InjectObject; > import org.apache.tapestry.annotations.InjectPage; > import org.apache.tapestry.annotations.InjectState; > import org.apache.tapestry.annotations.Persist; > import org.apache.tapestry.components.Block; > import org.apache.tapestry.event.PageBeginRenderListener; > import org.apache.tapestry.event.PageEvent; > > import com.technolog.UserASO; > import com.technolog.component.MeterCB; > import com.technolog.dao.SiteListDAO; > import com.technolog.dao.UserDAO; > import com.technolog.db.AUser; > import com.technolog.db.Meter; > > public abstract class Permissions extends SecuredBasePage implements > PageBeginRenderListener{ > > @InjectPage("Users") > public abstract Users getUsersPage(); > > @InjectObject("spring:siteListDAO") > public abstract SiteListDAO getSiteListDAO(); > > @InjectObject("spring:userDAO") > public abstract UserDAO getUserDAO(); > > @InjectState("user") > public abstract UserASO getUserASO(); > > @Persist > public abstract List<MeterCB> getMetersOwnedByUser(); > public abstract void setMetersOwnedByUser(List<MeterCB> list); > > public abstract MeterCB getMeterOwnedByUser(); > > public abstract MeterCB getMeterNotOwnedByUser(); > > @Persist > public abstract List<MeterCB> getMetersNotOwnedByUser(); > public abstract void setMetersNotOwnedByUser(List<MeterCB> list); > > @Persist > public abstract AUser getUser(); > public abstract void setUser(AUser user); > > public List<MeterCB> metersToAssign = new ArrayList<MeterCB>(0); > public List<MeterCB> metersToUnAssign = new ArrayList<MeterCB>(0); > > public void doRemovePermissions(IRequestCycle cycle){ > if (getMetersOwnedByUser()!=null) > return; > for (MeterCB meter : getMetersOwnedByUser()){ > if (meter.getSelected()){ > > getUserDAO().deleteMeterFromUser(getUser().getUserId(), > meter.getMeterId()); > } > } > } > > public void doAddPermissions(IRequestCycle cycle){ > if (getMetersNotOwnedByUser()!=null) > return; > for (MeterCB meter : getMetersNotOwnedByUser()){ > if (meter.getSelected()){ > getUserDAO().addMeterToUser(getUser().getUserId(), > meter.getMeterId()); > } > } > } > > public void doPrevPage(IRequestCycle cycle){ > cycle.activate(getUsersPage() ); > } > > public boolean containsMeter(List<Meter> meters, long meterId){ > for (Meter meter : meters){ > if (meter.getMeterId()==meterId){ > return true; > } > } > return false; > } > > public List<Meter> getDifference(List<Meter> meters, List<Meter> > meters2){ > List<Meter> differenceList = new Vector<Meter>(0); > for (Meter meter : meters){ > if (containsMeter(meters2, meter.getMeterId())){ > > } else { > differenceList.add(meter); > } > } > return differenceList; > } > > public void pageBeginRender(PageEvent event){ > > if (!event.getRequestCycle().isRewinding()){ > > List<Meter> notOwnedMetersList = > getSiteListDAO().GetCompleteUserSiteList(); > List<Meter> ownedMetersList = > getSiteListDAO().GetUserSiteList(getUser().getUserName()); > > //notOwnedMetersList.removeAll(ownedMetersList); > notOwnedMetersList = getDifference(notOwnedMetersList, > ownedMetersList); > List<MeterCB> metersNotOwnedByUser = new Vector<MeterCB>(0); > for (Meter meter: notOwnedMetersList){ > metersNotOwnedByUser.add(new MeterCB(meter, false)); > } > > setMetersNotOwnedByUser(metersNotOwnedByUser); > > > List<MeterCB> metersOwnedByUser = new Vector<MeterCB>(0); > for (Meter meter: ownedMetersList){ > metersOwnedByUser.add(new MeterCB(meter, false)); > } > > setMetersOwnedByUser(metersOwnedByUser); > } else { > System.out.println("rewinding..."); > > metersToAssign.clear(); > metersToUnAssign.clear(); > } > > System.out.println("fire"); > } > > public Block getMetersOwned(){ > return (Block)getComponent("metersOwnedBlock"); > } > > public Block getMetersNotOwned(){ > return (Block)getComponent("metersNotOwnedBlock"); > } > > public void unAssignedSiteListener(IRequestCycle cycle){ > if (cycle.isRewinding()){ > MeterCB meter = getMeterNotOwnedByUser(); > if (!meter.getSelected()) return; > metersToAssign.add(meter); > System.out.println("assigned "+meter.getMeterId()); > } > > } > > public void assignedSiteListener(IRequestCycle cycle){ > if (cycle.isRewinding()){ > > MeterCB meter = getMeterOwnedByUser(); > if (!meter.getSelected()) return; > metersToUnAssign.add(meter); > System.out.println("uassigned "+meter.getMeterId()); > } > > } > > } > > permissions.page > <?xml version="1.0" encoding="UTF-8"?> > <!DOCTYPE page-specification > PUBLIC "-//Apache Software Foundation//Tapestry Specification > 4.0//EN" > "http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd"> > <page-specification class="com.technolog.page.Permissions"> > <component id="form" type="Form"/> > > <component id="border" type="Border"/> > > <component id="showMetersOwned" type="RenderBlock"> > <binding name="block" value="metersOwned"/> > </component> > > <component id="showMetersNotOwned" type="RenderBlock"> > <binding name="block" value="metersNotOwned"/> > </component> > > <component id="metersOwned" type="For"> > <binding name="source" value="metersOwnedByUser"/> > <binding name="value" value="meterOwnedByUser"/> > <binding name="element" value="literal:tr"/> > </component> > > <component id="metersNotOwned" type="For"> > <binding name="source" value="metersNotOwnedByUser"/> > <binding name="value" value="meterNotOwnedByUser"/> > <binding name="element" value="literal:tr"/> > </component> > > <component id="metersOwnedBlock" type="Block"/> > > <component id="metersNotOwnedBlock" type="Block"/> > > <component id="prev" type="DirectLink"> > <binding name="listener" value="listener:doPrevPage"/> > </component> > > <component id="removeMeters" type="Submit"> > <binding name="listener" > value="listener:doRemovePermissions"/> > </component> > > <component id="addMeters" type="Submit"> > <binding name="listener" > value="listener:doAddPermissions"/> > </component> > > <component id="mpanMetersNotOwned" type="Insert"> > <binding name="value" value="meterNotOwnedByUser.mpan"/> > </component> > > <component id="meterIdMetersNotOwned" type="Insert"> > <binding name="value" > value="meterNotOwnedByUser.meterId"/> > </component> > > <component id="mpanMetersOwned" type="Insert"> > <binding name="value" value="meterOwnedByUser.mpan"/> > </component> > > <component id="meterIdMetersOwned" type="Insert"> > <binding name="value" value="meterOwnedByUser.meterId"/> > </component> > > <component id="selectedMetersNotOwned" type="Checkbox"> > <binding name="value" > value="meterNotOwnedByUser.selected"/> > </component> > > <component id="selectedMetersOwned" type="Checkbox"> > <binding name="value" > value="meterOwnedByUser.selected"/> > </component> > > <component id ="unAssignedSitesListener" > type="InvokeListener"> > <binding name="listener" > value="listener:unAssignedSiteListener"/> > </component> > > <component id="assignedSitesListener" > type="InvokeListener"> > <binding name="listener" > value="listener:assignedSiteListener"/> > </component> > > </page-specification> > > > --------------------------------------------------------------------------------------------------------------------- > > permissions.html > <html> > <head > > <title>title</title> > <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> > > <body> > > <span jwcid="$content$"> > <span jwcid="border"> > <form jwcid="form"> > <table> > <tr valign="top"><td><span jwcid="showMetersNotOwned"/></td><td > align="center"><input jwcid="addMeters" type="submit" value="Add > Meter"/><br/><br/><input jwcid="removeMeters" type="submit" > value="Remove Meter"/></td><td><span > jwcid="showMetersOwned"/></td></tr> > </table> > </form> > > <a jwcid="prev" href="">Prev</a> > > <span jwcid="metersNotOwnedBlock"> > <b>Meters not assigned</b><br/> > <table> > <tr jwcid="metersNotOwned" > > <td><span jwcid="mpanMetersNotOwned"/></td> > <td><span jwcid="meterIdMetersNotOwned"/></td> > <td><input jwcid="selectedMetersNotOwned" type="checkbox"/></td> > <span jwcid="unAssignedSitesListener"/> > </tr> > </table> > </span> > > <span jwcid="metersOwnedBlock"> > <b>Meters already assigned</b><br/> > <table> > <tr jwcid="metersOwned"> > <td><span jwcid="mpanMetersOwned"/></td> > <td><span jwcid="meterIdMetersOwned"/></td> > <td><input jwcid="selectedMetersOwned" type="checkbox"/></td> > <span jwcid="assignedSitesListener"/> > </tr> > </table> > </span> > > </span> > </span> > </body> > </html> > > ---------------------------------------------------------------------------------------------------------------------- > > meterCB.java > package com.technolog.component; > > import java.io.Serializable; > > import com.technolog.db.Meter; > > public class MeterCB extends Meter implements Serializable{ > > /** > * > */ > private static final long serialVersionUID = -3502445516008868262L; > private Boolean selected = false; > > /** > * > * @param meterId > * @param mpan > * @param meterName > * @param demoMeter > * @param readerType > * @param industry > * @param tamper > * @param selected > */ > public MeterCB(long meterId, long mpan, String meterName, byte > demoMeter, short readerType, short industry, Boolean tamper, Boolean > selected) { > super(meterId, mpan, meterName, demoMeter, readerType, > industry, tamper); > this.selected = selected; > } > /** > * > * @param meter > */ > public MeterCB(Meter meter){ > super(meter.getMeterId(), meter.getMpan(), meter.getMeterName(), > meter.getDemoMeter(), meter.getReaderType(), meter.getIndustry(), > meter.getTamper()); > selected = false; > } > /** > * > * @param meter > * @param selected > */ > public MeterCB(Meter meter, Boolean selected){ > super(meter.getMeterId(), meter.getMpan(), meter.getMeterName(), > meter.getDemoMeter(), meter.getReaderType(), meter.getIndustry(), > meter.getTamper()); > this.selected = selected; > } > > public Boolean getSelected() { > return selected; > } > > public void setSelected(Boolean selected) { > this.selected = selected; > } > > > > } > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
-- Thanks A Jabbar Azam --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]