Davide,

For this problem I only have code that worked in T3 using the ListEdit component. In T4 you should use the For component. I hope the clue you're looking for will be in here nonetheless...

<tr jwcid="@ListEdit" source="ognl:picksModel.keys" value="ognl:picksModel.key" listener="ognl:listeners.synchronizePick" element="tr">
                                <td>
<span jwcid="@PropertySelection" model="ognl:pickSelectionModel" value="ognl:pick.pick">PickSelector</span>
                                </td>
                        </tr>

The java...

        public abstract ListEditMap getPicksModel();
        public abstract void setPicksModel(ListEditMap value);
        public abstract void setPick(SinglePick value);

        private PickSelectionModel pickSelectionModel;
        public PickSelectionModel getPickSelectionModel() {
                if (pickSelectionModel == null) {
                        pickSelectionModel = new PickSelectionModel();
                }
                return pickSelectionModel;
        }

        public void synchronizePick(IRequestCycle cycle) {
                ListEditMap map = getPicksModel();

                SinglePick sp = (SinglePick) map.getValue();

                if (sp == null) {
                        setErrorMessage("out-of-date");
                        throw new PageRedirectException(this);
                }

                setPick(sp);
        }

        public void accept(IRequestCycle cycle) throws ValidationException {
                Visit v = (Visit) getVisit();
                try {

                        // Get all the picks from the screen

                        ListEditMap map = getPicksModel();
                        List picks = map.getAllValues();

                        // iterate through the list, call back end, catch 
exceptions, etc...

                }

        }

The Property Selection...

        public class PickSelectionModel implements IPropertySelectionModel {

        // etc...
        
HTH,

Geoff Callender


On 12/02/2007, at 1:41 PM, Davide Bruzzone wrote:

Greetings all...

I've been trying to set up a table where each row contains several columns whose values can be selected from a PropertySelection component. I'm able to get the table to render when the page is first loaded but haven't figured out how to track the selected item in each dropdown cell when the page is
reloaded.

I used the example on the PropertySelection documentation page as a starting point; I have a class that implements the IPropertySelectionModel and a DropdownItem class that encapsulates a single dropdown item. I then have a
domain object for each row and need to:

- Set the values of the rows' properties that are set via dropdowns in the
rows' domain objects
- Remember what changes the user has made to any of the rows (on the first
or subsequent pages) when the page is submitted and reloaded

The PropertySelection example adds methods to the page class to track the selected item for a dropdown that's not repeated on multiple rows; I just can't figure out how to extrapolate the example to multiple table rows.

Any suggestions, pointers to examples, etc. would be greatly appreciated...

Cheers...

Davide Bruzzone

Reply via email to