Problem with two @for tags inside a @form tag
5 answers - 10657 bytes -

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 ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import com.technolog.UserAS;
import ;
import com.technolog.dao.SiteListDA;
import com.technolog.dao.UserDA;
import com.technolog.db.AUser;
import com.technolog.db.Meter;
public abstract class Permissions extends SecuredBasePage implements
PageBeginRenderListener{
@InjectPage("Users")
public abstract Users getUsersPage();
@I("spring:siteListDA")
public abstract SiteListDA getSiteListDA();
@I("spring:userDA")
public abstract UserDA getUserDA();
@InjectState("user")
public abstract UserAS getUserAS();
@Persist
public abstract List<MeterCBgetMByUser();
public abstract void setMByUser(List<MeterCBlist);
public abstract MeterCB getMByUser();
public abstract MeterCB getMeterNByUser();
@Persist
public abstract List<MeterCBgetMetersNByUser();
public abstract void setMetersNByUser(List<MeterCBlist);
@Persist
public abstract AUser getUser();
public abstract void setUser(AUser user);
public List<MeterCBmetersToAssign = new ArrayList<MeterCB>(0);
public List<MeterCBmetersToUnAssign = new ArrayList<MeterCB>(0);
public void doRemovePermissions(IRequestCycle cycle){
if (getMByUser()!=null)
return;
for (MeterCB meter : getMByUser()){
if (meter.getSelected()){
getUserDA().deleteMeterFromUser(getUser().getUserI d(), meter.getMeterId());
}
}
}
public void doAddPermissions(IRequestCycle cycle){
if (getMetersNByUser()!=null)
return;
for (MeterCB meter : getMetersNByUser()){
if (meter.getSelected()){
getUserDA().addMeterToUser(getUser().getUserId(), meter.getMeterId());
}
}
}
public void doPrevPage(IRequestCycle cycle){
cycle.activate(getUsersPage() );
}
public boolean containsMeter(List<Metermeters, long meterId){
for (Meter meter : meters){
if (meter.getMeterId()==meterId){
return true;
}
}
return false;
}
public List<MetergetDifference(List<Metermeters, List<Metermeters2){
List<MeterdifferenceList = 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<MeterMetersList = getSiteListDA().GetCompleteUserSiteList();
List<MeterownedMetersList =
getSiteListDA().GetUserSiteList(getUser().getUserN ame());
//MetersList.removeAll(ownedMetersList);
MetersList = getDifference(MetersList, ownedMetersList);
List<MeterCBmetersNByUser = new Vector<MeterCB>(0);
for (Meter meter: MetersList){
metersNByUser.add(new MeterCB(meter, false));
}
setMetersNByUser(metersNByUser);
List<MeterCBByUser = new Vector<MeterCB>(0);
for (Meter meter: ownedMetersList){
ByUser.add(new MeterCB(meter, false));
}
setMByUser(ByUser);
} else {
System.out.println("rewinding");
metersToAssign.clear();
metersToUnAssign.clear();
}
System.out.println("fire");
}
public Block getM(){
return (Block)getComponent("Block");
}
public Block getMetersN(){
return (Block)getComponent("metersNBlock");
}
public void unAssignedSiteListener(IRequestCycle cycle){
if (cycle.isRewinding()){
MeterCB meter = getMeterNByUser();
if (!meter.getSelected()) return;
metersToAssign.add(meter);
System.out.println("assigned "+meter.getMeterId());
}
}
public void assignedSiteListener(IRequestCycle cycle){
if (cycle.isRewinding()){
MeterCB meter = getMByUser();
if (!meter.getSelected()) return;
metersToUnAssign.add(meter);
System.out.println("uassigned "+meter.getMeterId());
}
}
}
permissions.page
<?xml version="1.0" encoding="UTF-8"?>
<!DCTYPE page-specification
PUBLIC "-//Apache Software Foundation//Tapestry Specification 4.0//EN"
"">
<page-specification class="com.technolog.page.Permissions">
<component id="form" type="Form"/>
<component id="border" type="Border"/>
<component id="showM" type="RenderBlock">
<binding name="block" value=""/>
</component>
<component id="showMetersN" type="RenderBlock">
<binding name="block" value="metersN"/>
</component>
<component id="" type="For">
<binding name="source" value="ByUser"/>
<binding name="value" value="ByUser"/>
<binding name="element" value="literal:tr"/>
</component>
<component id="metersN" type="For">
<binding name="source" value="metersNByUser"/>
<binding name="value" value="meterNByUser"/>
<binding name="element" value="literal:tr"/>
</component>
<component id="Block" type="Block"/>
<component id="metersNBlock" 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="mpanMetersN" type="Insert">
<binding name="value" value="meterNByUser.mpan"/>
</component>
<component id="meterIdMetersN" type="Insert">
<binding name="value" value="meterNByUser.meterId"/>
</component>
<component id="mpanM" type="Insert">
<binding name="value" value="ByUser.mpan"/>
</component>
<component id="meterIdM" type="Insert">
<binding name="value" value="ByUser.meterId"/>
</component>
<component id="selectedMetersN" type="Checkbox">
<binding name="value" value="meterNByUser.selected"/>
</component>
<component id="selectedM" type="Checkbox">
<binding name="value" value="ByUser.selected"/>
</component>
<component id ="unAssignedSitesListener" type="InvokeListener">
<binding name="listener" value=""/>
</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="showMetersN"/></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="showM"/></td></tr>
</table>
</form>
<a jwcid="prev" href="">Prev</a>
<span jwcid="metersNBlock">
<b>Meters not assigned</b><br/>
<table>
<tr jwcid="metersN" >
<td><span jwcid="mpanMetersN"/></td>
<td><span jwcid="meterIdMetersN"/></td>
<td><input jwcid="selectedMetersN" type="checkbox"/></td>
<span jwcid="unAssignedSitesListener"/>
</tr>
</table>
</span>
<span jwcid="Block">
<b>Meters already assigned</b><br/>
<table>
<tr jwcid="">
<td><span jwcid="mpanM"/></td>
<td><span jwcid="meterIdM"/></td>
<td><input jwcid="selectedM" 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;
}
}
No.1 | | 11217 bytes |
| 
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!
26/06/06, Norbert S <developer (AT) erinors (DOT) comwrote:
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 ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import com.technolog.UserAS;
import ;
import com.technolog.dao.SiteListDA;
import com.technolog.dao.UserDA;
import com.technolog.db.AUser;
import com.technolog.db.Meter;
public abstract class Permissions extends SecuredBasePage implements
PageBeginRenderListener{
@InjectPage("Users")
public abstract Users getUsersPage();
@I("spring:siteListDA")
public abstract SiteListDA getSiteListDA();
@I("spring:userDA")
public abstract UserDA getUserDA();
@InjectState("user")
public abstract UserAS getUserAS();
@Persist
public abstract List<MeterCBgetMByUser();
public abstract void setMByUser(List<MeterCBlist);
public abstract MeterCB getMByUser();
public abstract MeterCB getMeterNByUser();
@Persist
public abstract List<MeterCBgetMetersNByUser();
public abstract void setMetersNByUser(List<MeterCBlist);
@Persist
public abstract AUser getUser();
public abstract void setUser(AUser user);
public List<MeterCBmetersToAssign = new ArrayList<MeterCB>(0);
public List<MeterCBmetersToUnAssign = new ArrayList<MeterCB>(0);
public void doRemovePermissions(IRequestCycle cycle){
if (getMByUser()!=null)
return;
for (MeterCB meter : getMByUser()){
if (meter.getSelected()){
getUserDA().deleteMeterFromUser(getUser().getUserI d(),
meter.getMeterId());
}
}
}
public void doAddPermissions(IRequestCycle cycle){
if (getMetersNByUser()!=null)
return;
for (MeterCB meter : getMetersNByUser()){
if (meter.getSelected()){
getUserDA().addMeterToUser(getUser().getUserId(),
meter.getMeterId());
}
}
}
public void doPrevPage(IRequestCycle cycle){
cycle.activate(getUsersPage() );
}
public boolean containsMeter(List<Metermeters, long meterId){
for (Meter meter : meters){
if (meter.getMeterId()==meterId){
return true;
}
}
return false;
}
public List<MetergetDifference(List<Metermeters, List<Meter>
meters2){
List<MeterdifferenceList = 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<MeterMetersList =
getSiteListDA().GetCompleteUserSiteList();
List<MeterownedMetersList =
getSiteListDA().GetUserSiteList(getUser().getUserN ame());
//MetersList.removeAll(ownedMetersList);
MetersList = getDifference(MetersList,
ownedMetersList);
List<MeterCBmetersNByUser = new Vector<MeterCB>(0);
for (Meter meter: MetersList){
metersNByUser.add(new MeterCB(meter, false));
}
setMetersNByUser(metersNByUser);
--
List<MeterCBByUser = new Vector<MeterCB>(0);
for (Meter meter: ownedMetersList){
ByUser.add(new MeterCB(meter, false));
}
setMByUser(ByUser);
} else {
System.out.println("rewinding");
metersToAssign.clear();
metersToUnAssign.clear();
}
System.out.println("fire");
}
public Block getM(){
return (Block)getComponent("Block");
}
public Block getMetersN(){
return (Block)getComponent("metersNBlock");
}
public void unAssignedSiteListener(IRequestCycle cycle){
if (cycle.isRewinding()){
MeterCB meter = getMeterNByUser();
if (!meter.getSelected()) return;
metersToAssign.add(meter);
System.out.println("assigned "+meter.getMeterId());
}
}
public void assignedSiteListener(IRequestCycle cycle){
if (cycle.isRewinding()){
MeterCB meter = getMByUser();
if (!meter.getSelected()) return;
metersToUnAssign.add(meter);
System.out.println("uassigned "+meter.getMeterId());
}
}
}
permissions.page
<?xml version="1.0" encoding="UTF-8"?>
<!DCTYPE page-specification
PUBLIC "-//Apache Software Foundation//Tapestry Specification
4.0//EN"
"">
<page-specification class="com.technolog.page.Permissions">
<component id="form" type="Form"/>
<component id="border" type="Border"/>
<component id="showM" type="RenderBlock">
<binding name="block" value=""/>
</component>
<component id="showMetersN" type="RenderBlock">
<binding name="block" value="metersN"/>
</component>
<component id="" type="For">
<binding name="source" value="ByUser"/>
<binding name="value" value="ByUser"/>
<binding name="element" value="literal:tr"/>
</component>
<component id="metersN" type="For">
<binding name="source" value="metersNByUser"/>
<binding name="value" value="meterNByUser"/>
<binding name="element" value="literal:tr"/>
</component>
<component id="Block" type="Block"/>
<component id="metersNBlock" 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="mpanMetersN" type="Insert">
<binding name="value" value="meterNByUser.mpan"/>
</component>
<component id="meterIdMetersN" type="Insert">
<binding name="value"
value="meterNByUser.meterId"/>
</component>
<component id="mpanM" type="Insert">
<binding name="value" value="ByUser.mpan"/>
</component>
<component id="meterIdM" type="Insert">
<binding name="value" value="ByUser.meterId"/>
</component>
<component id="selectedMetersN" type="Checkbox">
<binding name="value"
value="meterNByUser.selected"/>
</component>
<component id="selectedM" type="Checkbox">
<binding name="value"
value="ByUser.selected"/>
</component>
<component id ="unAssignedSitesListener"
type="InvokeListener">
<binding name="listener"
value=""/>
</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="showMetersN"/></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="showM"/></td></tr>
</table>
</form>
<a jwcid="prev" href="">Prev</a>
<span jwcid="metersNBlock">
<b>Meters not assigned</b><br/>
<table>
<tr jwcid="metersN" >
<td><span jwcid="mpanMetersN"/></td>
<td><span jwcid="meterIdMetersN"/></td>
<td><input jwcid="selectedMetersN" type="checkbox"/></td>
<span jwcid="unAssignedSitesListener"/>
</tr>
</table>
</span>
<span jwcid="Block">
<b>Meters already assigned</b><br/>
<table>
<tr jwcid="">
<td><span jwcid="mpanM"/></td>
<td><span jwcid="meterIdM"/></td>
<td><input jwcid="selectedM" 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 (AT) tapestry (DOT) apache.org
For additional commands, e-mail: users-help (AT) tapestry (DOT) apache.org
--
No.2 | | 11459 bytes |
| 
Hello again,
Must be having a bad day, I didn't check the results properly still
doesn't work still looking
28/06/06, Jabbar <ajazam (AT) gmail (DOT) comwrote:
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!
--
26/06/06, Norbert S <developer (AT) erinors (DOT) comwrote:
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 ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import com.technolog.UserAS;
import ;
import com.technolog.dao.SiteListDA;
import com.technolog.dao.UserDA;
import com.technolog.db.AUser;
import com.technolog.db.Meter;
public abstract class Permissions extends SecuredBasePage implements
PageBeginRenderListener{
@InjectPage("Users")
public abstract Users getUsersPage();
@I("spring:siteListDA")
public abstract SiteListDA getSiteListDA();
@I("spring:userDA")
public abstract UserDA getUserDA();
@InjectState("user")
public abstract UserAS getUserAS();
@Persist
public abstract List<MeterCBgetMByUser();
public abstract void setMByUser(List<MeterCBlist);
public abstract MeterCB getMByUser();
public abstract MeterCB getMeterNByUser();
@Persist
public abstract List<MeterCBgetMetersNByUser();
public abstract void setMetersNByUser(List<MeterCBlist);
@Persist
public abstract AUser getUser();
public abstract void setUser(AUser user);
public List<MeterCBmetersToAssign = new ArrayList<MeterCB>(0);
public List<MeterCBmetersToUnAssign = new ArrayList<MeterCB>(0);
public void doRemovePermissions(IRequestCycle cycle){
if (getMByUser()!=null)
return;
for (MeterCB meter : getMByUser()){
if (meter.getSelected()){
getUserDA().deleteMeterFromUser(getUser().getUserI d(),
meter.getMeterId());
}
}
}
public void doAddPermissions(IRequestCycle cycle){
if (getMetersNByUser()!=null)
return;
for (MeterCB meter : getMetersNByUser()){
if (meter.getSelected()){
getUserDA().addMeterToUser(getUser().getUserId(),
meter.getMeterId());
}
}
}
public void doPrevPage(IRequestCycle cycle){
cycle.activate(getUsersPage() );
}
public boolean containsMeter(List<Metermeters, long meterId){
for (Meter meter : meters){
if (meter.getMeterId()==meterId){
return true;
}
}
return false;
}
public List<MetergetDifference(List<Metermeters, List<Meter>
meters2){
List<MeterdifferenceList = 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<MeterMetersList =
getSiteListDA().GetCompleteUserSiteList();
List<MeterownedMetersList =
getSiteListDA().GetUserSiteList(getUser().getUserN ame());
//MetersList.removeAll(ownedMetersList);
MetersList = getDifference(MetersList,
ownedMetersList);
List<MeterCBmetersNByUser = new Vector<MeterCB>(0);
for (Meter meter: MetersList){
metersNByUser.add(new MeterCB(meter, false));
}
setMetersNByUser(metersNByUser);
--
List<MeterCBByUser = new Vector<MeterCB>(0);
for (Meter meter: ownedMetersList){
ByUser.add(new MeterCB(meter, false));
}
setMByUser(ByUser);
} else {
System.out.println("rewinding");
metersToAssign.clear();
metersToUnAssign.clear();
}
System.out.println("fire");
}
public Block getM(){
return (Block)getComponent("Block");
}
public Block getMetersN(){
return (Block)getComponent("metersNBlock");
}
public void unAssignedSiteListener(IRequestCycle cycle){
if (cycle.isRewinding()){
MeterCB meter = getMeterNByUser();
if (!meter.getSelected()) return;
metersToAssign.add(meter);
System.out.println("assigned "+meter.getMeterId());
}
}
public void assignedSiteListener(IRequestCycle cycle){
if (cycle.isRewinding()){
MeterCB meter = getMByUser();
if (!meter.getSelected()) return;
metersToUnAssign.add(meter);
System.out.println("uassigned "+meter.getMeterId());
}
}
}
permissions.page
<?xml version="1.0" encoding="UTF-8"?>
<!DCTYPE page-specification
PUBLIC "-//Apache Software Foundation//Tapestry Specification
4.0//EN"
"">
<page-specification class="com.technolog.page.Permissions">
<component id="form" type="Form"/>
<component id="border" type="Border"/>
<component id="showM" type="RenderBlock">
<binding name="block" value=""/>
</component>
<component id="showMetersN" type="RenderBlock">
<binding name="block" value="metersN"/>
</component>
<component id="" type="For">
<binding name="source" value="ByUser"/>
<binding name="value" value="ByUser"/>
<binding name="element" value="literal:tr"/>
</component>
<component id="metersN" type="For">
<binding name="source" value="metersNByUser"/>
<binding name="value" value="meterNByUser"/>
<binding name="element" value="literal:tr"/>
</component>
<component id="Block" type="Block"/>
<component id="metersNBlock" 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="mpanMetersN" type="Insert">
<binding name="value" value="meterNByUsermpan"/>
</component>
<component id="meterIdMetersN" type="Insert">
<binding name="value"
value="meterNByUser.meterId"/>
</component>
<component id="mpanM" type="Insert">
<binding name="value" value="ByUser.mpan"/>
</component>
<component id="meterIdM" type="Insert">
<binding name="value" value="ByUser.meterId"/>
</component>
<component id="selectedMetersN" type="Checkbox">
<binding name="value"
value="meterNByUser.selected"/>
</component>
<component id="selectedM" type="Checkbox">
<binding name="value"
value="ByUser.selected"/>
</component>
<component id ="unAssignedSitesListener"
type="InvokeListener">
<binding name="listener"
value=""/>
</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="showMetersN"/></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="showM"/></td></tr>
</table>
</form>
<a jwcid="prev" href="">Prev</a>
<span jwcid="metersNBlock">
<b>Meters not assigned</b><br/>
<table>
<tr jwcid="metersN" >
<td><span jwcid="mpanMetersN"/></td>
<td><span jwcid="meterIdMetersN"/></td>
<td><input jwcid="selectedMetersN" type="checkbox"/></td>
<span jwcid="unAssignedSitesListener"/>
</tr>
</table>
</span>
<span jwcid="Block">
<b>Meters already assigned</b><br/>
<table>
<tr jwcid="">
<td><span jwcid="mpanM"/></td>
<td><span jwcid="meterIdM"/></td>
<td><input jwcid="selectedM" 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 (AT) tapestry (DOT) apache.org
For additional commands, e-mail: users-help (AT) tapestry (DOT) apache.org
>
>
>
>
No.3 | | 12133 bytes |
| 
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
28/06/06, Jabbar <ajazam (AT) gmail (DOT) comwrote:
Hello again,
Must be having a bad day, I didn't check the results properly still
doesn't work still looking
28/06/06, Jabbar <ajazam (AT) gmail (DOT) comwrote:
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!
--
26/06/06, Norbert S <developer (AT) erinors (DOT) comwrote:
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 ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import com.technolog.UserAS;
import ;
import com.technolog.dao.SiteListDA;
import com.technolog.dao.UserDA;
import com.technolog.db.AUser;
import com.technolog.db.Meter;
public abstract class Permissions extends SecuredBasePage implements
PageBeginRenderListener{
@InjectPage("Users")
public abstract Users getUsersPage();
@I("spring:siteListDA")
public abstract SiteListDA getSiteListDA();
@I("spring:userDA")
public abstract UserDA getUserDA();
@InjectState("user")
public abstract UserAS getUserAS();
@Persist
public abstract List<MeterCBgetMByUser();
public abstract void setMByUser(List<MeterCBlist);
public abstract MeterCB getMByUser();
public abstract MeterCB getMeterNByUser();
@Persist
public abstract List<MeterCBgetMetersNByUser();
public abstract void setMetersNByUser(List<MeterCBlist);
@Persist
public abstract AUser getUser();
public abstract void setUser(AUser user);
public List<MeterCBmetersToAssign = new ArrayList<MeterCB>(0);
public List<MeterCBmetersToUnAssign = new ArrayList<MeterCB>(0);
public void doRemovePermissions(IRequestCycle cycle){
if (getMByUser()!=null)
return;
for (MeterCB meter : getMByUser()){
if (meter.getSelected()){
getUserDA().deleteMeterFromUser(getUser().getUserI d(),
meter.getMeterId());
}
}
}
public void doAddPermissions(IRequestCycle cycle){
if (getMetersNByUser()!=null)
return;
for (MeterCB meter : getMetersNByUser()){
if (meter.getSelected()){
getUserDA().addMeterToUser(getUser().getUserId(),
meter.getMeterId());
}
}
}
public void doPrevPage(IRequestCycle cycle){
cycle.activate(getUsersPage() );
}
public boolean containsMeter(List<Metermeters, long meterId){
for (Meter meter : meters){
if (meter.getMeterId()==meterId){
return true;
}
}
return false;
}
public List<MetergetDifference(List<Metermeters, List<Meter>
meters2){
List<MeterdifferenceList = 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<MeterMetersList =
getSiteListDA().GetCompleteUserSiteList();
List<MeterownedMetersList =
getSiteListDA().GetUserSiteList(getUser().getUserN ame());
//MetersList.removeAll(ownedMetersList);
MetersList = getDifference(MetersList,
ownedMetersList);
List<MeterCBmetersNByUser = new Vector<MeterCB>(0);
for (Meter meter: MetersList){
metersNByUser.add(new MeterCB(meter, false));
}
setMetersNByUser(metersNByUser);
--
List<MeterCBByUser = new Vector<MeterCB>(0);
for (Meter meter: ownedMetersList){
ByUser.add(new MeterCB(meter, false));
}
setMByUser(ByUser);
} else {
System.out.println("rewinding");
metersToAssign.clear();
metersToUnAssign.clear();
}
System.out.println("fire");
}
public Block getM(){
return (Block)getComponent("Block");
}
public Block getMetersN(){
return (Block)getComponent("metersNBlock");
}
public void unAssignedSiteListener(IRequestCycle cycle){
if (cycle.isRewinding()){
MeterCB meter = getMeterNByUser();
if (!meter.getSelected()) return;
metersToAssign.add(meter);
System.out.println("assigned "+meter.getMeterId());
}
}
public void assignedSiteListener(IRequestCycle cycle){
if (cycle.isRewinding()){
MeterCB meter = getMByUser();
if (!meter.getSelected()) return;
metersToUnAssign.add(meter);
System.out.println("uassigned "+meter.getMeterId());
}
}
}
permissions.page
<?xml version="1.0" encoding="UTF-8"?>
<!DCTYPE page-specification
PUBLIC "-//Apache Software Foundation//Tapestry Specification
4.0//EN"
"">
<page-specification class="com.technolog.page.Permissions">
<component id="form" type="Form"/>
<component id="border" type="Border"/>
<component id="showM" type="RenderBlock">
<binding name="block" value=""/>
</component>
<component id="showMetersN" type="RenderBlock">
<binding name="block" value="metersN"/>
</component>
<component id="" type="For">
<binding name="source" value="ByUser"/>
<binding name="value" value="ByUser"/>
<binding name="element" value="literal:tr"/>
</component>
<component id="metersN" type="For">
<binding name="source" value="metersNByUser"/>
<binding name="value" value="meterNByUser"/>
<binding name="element" value="literal:tr"/>
</component>
<component id="Block" type="Block"/>
<component id="metersNBlock" 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="mpanMetersN" type="Insert">
<binding name="value" value="meterNByUser.mpan"/>
</component>
<component id="meterIdMetersN" type="Insert">
<binding name="value"
value="meterNByUser.meterId"/>
</component>
<component id="mpanM" type="Insert">
<binding name="value" value="ByUser.mpan"/>
</component>
<component id="meterIdM" type="Insert">
<binding name="value" value="ByUser.meterId"/>
</component>
<component id="selectedMetersN" type="Checkbox">
<binding name="value"
value="meterNByUser.selected"/>
</component>
<component id="selectedM" type="Checkbox">
<binding name="value"
value="ByUser.selected"/>
</component>
<component id ="unAssignedSitesListener"
type="InvokeListener">
<binding name="listener"
value=""/>
</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="showMetersN"/></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="showM"/></td></tr>
</table>
</form>
<a jwcid="prev" href="">Prev</a>
<span jwcid="metersNBlock">
<b>Meters not assigned</b><br/>
<table>
<tr jwcid="metersN" >
<td><span jwcid="mpanMetersN"/></td>
<td><span jwcid="meterIdMetersN"/></td>
<td><input jwcid="selectedMetersN" type="checkbox"/></td>
<span jwcid="unAssignedSitesListener"/>
</tr>
</table>
</span>
<span jwcid="Block">
<b>Meters already assigned</b><br/>
<table>
<tr jwcid="">
<td><span jwcid="mpanM"/></td>
<td><span jwcid="meterIdM"/></td>
<td><input jwcid="selectedM" 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 (AT) tapestry (DOT) apache.org
For additional commands, e-mail: users-help (AT) tapestry (DOT) apache.org
>
>
>
>
No.4 | | 354 bytes |
| 
Apparently tapestry-user-subscribe (AT) jakarta (DOT) 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 (AT) tapestry (DOT) apache.org
For additional commands, e-mail: users-help (AT) tapestry (DOT) apache.org
No.5 | | 424 bytes |
| 
6/28/06, kranga <kranga (AT) k2d2 (DOT) orgwrote:
Apparently tapestry-user-subscribe (AT) jakarta (DOT) 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 (AT) tapestry (DOT) apache.org
For additional commands, e-mail: users-help (AT) tapestry (DOT) apache.org
--