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]

Reply via email to