Right... There wasn't anything wrong with tapestry, I was calling my submit listener method before the page properties where being set. I made the following changes to my .page file
original source... <component id="removeMeters" type="Submit"> <binding name="listener" value="listener:doRemovePermissions"/> </component> modified source... <component id="removeMeters" type="Submit"> <binding name="action" value="listener:doRemovePermissions"/> </component> I should have assigned by listener to the action property... On 28/06/06, Jabbar <[EMAIL PROTECTED]> wrote:
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
-- Thanks A Jabbar Azam --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]