You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Jabbar <aj...@gmail.com> on 2006/06/26 12:22:27 UTC

Problem with two @for tags inside a @form tag

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;
	}
	
	

}

-- 
Thanks

 A Jabbar Azam

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: User subscription email broken?

Posted by Jesse Kuhnert <jk...@gmail.com>.
http://tapestry.apache.org/mail-lists.html


On 6/28/06, kranga <kr...@k2d2.org> wrote:
>
> Apparently tapestry-user-subscribe@jakarta.apache.org is giving errors (no
> such email address). Does anyone know what the right email address is for
> users to subscribe?
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>


-- 
Jesse Kuhnert
Tacos/Tapestry, team member/developer

Open source based consulting work centered around
dojo/tapestry/tacos/hivemind.

User subscription email broken?

Posted by kranga <kr...@k2d2.org>.
Apparently tapestry-user-subscribe@jakarta.apache.org is giving errors (no 
such email address). Does anyone know what the right email address is for 
users to subscribe? 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Problem with two @for tags inside a @form tag

Posted by Jabbar <aj...@gmail.com>.
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 <aj...@gmail.com> 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 <aj...@gmail.com> 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 <de...@erinors.com> 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: users-unsubscribe@tapestry.apache.org
> > > For additional commands, e-mail: users-help@tapestry.apache.org
> > >
> > >
> >
> >
> > --
> > Thanks
> >
> >  A Jabbar Azam
> >
>
>
> --
> Thanks
>
>  A Jabbar Azam
>


-- 
Thanks

 A Jabbar Azam

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Problem with two @for tags inside a @form tag

Posted by Jabbar <aj...@gmail.com>.
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 <aj...@gmail.com> 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 <de...@erinors.com> 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: users-unsubscribe@tapestry.apache.org
> > For additional commands, e-mail: users-help@tapestry.apache.org
> >
> >
>
>
> --
> Thanks
>
>  A Jabbar Azam
>


-- 
Thanks

 A Jabbar Azam

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Problem with two @for tags inside a @form tag

Posted by Jabbar <aj...@gmail.com>.
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 <de...@erinors.com> 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: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>


-- 
Thanks

 A Jabbar Azam

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Problem with two @for tags inside a @form tag

Posted by Norbert Sándor <de...@erinors.com>.
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: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org