Hello again, Must be having a bad day, I didn't check the results properly... still doesn't work... still looking...
On 28/06/06, Jabbar <[EMAIL PROTECTED]> wrote:
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
-- Thanks A Jabbar Azam --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]