For the record, this works fine if I take the @Property off the _delete field. It was interfering with setDelete(boolean delete). Thanks to Uli for pointing this out to me.

This wasted so much of my time I'm pleased to see someone's just added an issue about @Property. Please have a look and vote for it if you agree. https://issues.apache.org/jira/browse/TAP5-301

Geoff

On 16/10/2008, at 8:12 AM, Geoff Callender wrote:

Uli,

I'm seeing isDelete() called as it renders the display but I'm not seeing setDelete(boolean delete) being called on submit. Can you please play spot the obvious error? Here's the code:

<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd";>
<body>
        <form t:type="form" t:id="deletables">
<table t:type="grid" t:source="persons" t:row="person" t:model="mymodel" t:volatile="false">
                        t:rowsPerPage="2" t:pagerPosition="top">[Persons Grid 
here]
                        <t:parameter name="deleteCell">
                                <input t:type="checkbox" t:id="delete" 
value="delete"/>
                        </t:parameter>
                </table>
                <input type="submit" value="Save"/>
         </form><br/>
</body>
</html>

package jumpstart.web.pages.examples.tables;

import java.util.ArrayList;
import java.util.List;

import jumpstart.business.domain.examples.Person;
import jumpstart.business.domain.examples.iface.IPersonServiceLocal;
import jumpstart.web.services.IBusinessServicesLocator;

import org.apache.tapestry5.ComponentResources;
import org.apache.tapestry5.annotations.Persist;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.annotations.Retain;
import org.apache.tapestry5.beaneditor.BeanModel;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.services.BeanModelSource;

public class GridForm {

        @SuppressWarnings("unused")
        @Property
        @Persist
        private List<Person> _persons;

        @SuppressWarnings("unused")
        @Property
        private Person _person;

        @Inject
        private IBusinessServicesLocator _businessServicesLocator;

        @Inject
        private BeanModelSource _beanModelSource;

        @Inject
        private ComponentResources _componentResources;

        @SuppressWarnings("unchecked")
        @Property
        @Retain
        private BeanModel _myModel;

        @Property
        private boolean _delete;

        @SuppressWarnings("unused")
        private List<Person> _personsToDelete;

        @SuppressWarnings("unused")
        @Property
        private Person _personToDelete;

        void setupRender() {

                if (_myModel == null) {
_myModel = _beanModelSource.create(Person.class, false, _componentResources.getMessages());
                        _myModel.add("delete", null);
_myModel.include("id", "firstName", "lastName", "startDate", "delete");
                }

// Get all persons - ask business service to find them (from the database)
                _persons = getPersonService().findPersons();
        }
        public void onPrepareForSubmit() {
                if (_persons == null) {
                        _persons = new ArrayList<Person>();
                }
        }

        void onSuccess() {
                List<Person> dudes = getPersonsToDelete();
                System.out.println(">>>> dudes = " + dudes);
                for (Person p : getPersonsToDelete()) {
                        System.out.println(">>>> delete " + p.getFirstName());
                }
        }

        private IPersonServiceLocal getPersonService() {
// Use our business services locator to get the EJB3 session bean called "PersonServiceLocal".
                return _businessServicesLocator.getPersonServiceLocal();
        }

        public List<Person> getPersonsToDelete() {
                if (_personsToDelete == null) {
                        _personsToDelete = new ArrayList<Person>();
                }
                return _personsToDelete;
        }

        public void setDelete(boolean delete) {
                if (delete) {
                        getPersonsToDelete().add(_person);
                }
        }

        public boolean isDelete() {
                return _delete;
        }
}


Geoff

On 16/10/2008, at 2:13 AM, Ulrich Stärk wrote:

Please ignore my stupidity. I misinterpreted the error message I was getting that had nothing to do with this.

You can still add a delete column to your model with model.add("delete", null) and add a "deleteCell" parameter to your template in order to have a delete column. Works like a charm.

Uli

Ulrich Stärk schrieb:
Woah! Indeed, this doesn't work anymore. Evil. How are we supposed to do this now?
Uli
Geoff Callender schrieb:
No response, so I guess that means we can't add a Delete column to a Grid any more.


On 14/10/2008, at 8:36 PM, Geoff Callender wrote:

Can anyone tell me if Penyihir's technique for adding a Delete column to Grid still works?

Please note this is not the same as editing a flag in the source entity - this is different - it's editing a column that we've added to the model.

On 10/12/2007, at 7:08 PM, Penyihir Kecil wrote:

it might be help :
-------------------
GridClub.tml
------------------
<form t:type="Form" t:id="clubForm">
     <table t:type="grid" rowsPerPage="5" pagerPosition="top"
source="clubList" row="club" remove="idClub" model="clubModel">
         <t:parameter name="deleteCell">
<input t:type="Checkbox" t:id="delete" value="delete"/>
         </t:parameter>
         <t:parameter name="updateCell">
<a t:type="PageLink" t:id="update" page="admin/ FormClub"
context="club.idClub"><img src="../images/edit.gif"/></a>
         </t:parameter>
         <!-- <t:parameter name="deleteCell">
             <a t:type="ActionLink" t:id="delete"
context="club.idClub">delete</a>
         </t:parameter>-->
     </table>
     <input type="submit" value="delete"/>

---------------------
GridClub.java
---------------------
@Inject
   private IClubDao clubDao;
   private List<Club> clubList;
   private Club club;           @Retain
   private BeanModel clubModel;
   @Inject
   private BeanModelSource beanModelSource;
 @Inject
 private ComponentResources resources;

 private boolean delete;
 public List<String> deletedList;


 public boolean isDelete() {
       return delete;
   }

   public void setDelete(boolean delete) {
if(delete) { getDeletedList().add(club.getIdClub());
       }
          }
           public List<String> getDeletedList() {
       if(deletedList == null){
deletedList = new ArrayList<String>(); }
       return deletedList;
   }

   void pageLoaded(){
clubModel = beanModelSource.create(Club.class, true, resources);
     clubModel.add("delete",null);
     clubModel.add("update",null);
            }

   public Club getClub() {
       return club;
   }
   public void setClub(Club club) {
       this.club = club;
   }
   public IClubDao getClubDao() {
       return clubDao;
   }
   public List<Club> getClubList() {
       if(clubList == null){
clubList = new ArrayList<Club>(); clubList = getClubDao().queryForList("", "");
       }
              return clubList;
   }
       public BeanModel getClubModel() {
       return clubModel;
   }
       Object onSuccessFromClubForm(){
for (Iterator<String> iter = getDeletedList().iterator(); iter.hasNext();) {
           String element = iter.next();
setClub((Club) getClubDao().findByPrimaryKey(element));
           getClubDao().delete(getClub());
} deletedList = null;
       return GridClub.class;
   }

On 12/10/07, Cristian Gonzalo Gary <[EMAIL PROTECTED]> wrote:

Hello
I need to modified the Column label, and put into and image with a link .

Thanks.
Gracias.
--
View this message in context:
http://www.nabble.com/-T5--How-Add-and-Image-to-Grid-Column-Label.-tp14242580p14242580.html
Sent from the Tapestry - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to