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]

Reply via email to