That is an issue in itself ;o) 

-----Original Message-----
From: Igor Vaynberg [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, August 06, 2008 1:00 PM
To: users@wicket.apache.org
Subject: Re: ListView in Forms

listviews dont use item reuse strategies...

-igor

On Wed, Aug 6, 2008 at 9:25 AM, Hoover, William <[EMAIL PROTECTED]>
wrote:
> If there are errors try setting this strategy on your list view:
>
> public class ReuseOnFeedbackMessageStrategy implements 
> IItemReuseStrategy {
>
>        private static final long serialVersionUID = 1L;
>        private static final int LEVEL_NA = 0;
>        private int feedbackMessageThresholdLevel;
>        private FeedbackMessageLevelComparator 
> feedbackMessageLevelComparator;
>        private int upperThresholdLevel;
>
>        /**
>         * Constructs a new ReuseOnFeedbackMessageStrategy taking an 
> feedbackMessageLevelComparator that does not require a lower/upper 
> bound threshold level.
>         *
>         * @param feedbackMessageLevelComparator
>         *            the [EMAIL PROTECTED] FeedbackMessageLevelComparator} to 
> be
> used when comparing the active message with the threshold
>         * @param feedbackMessageThresholdLevel
>         *            the threshold level to be compared
>         */
>        public ReuseOnFeedbackMessageStrategy(final
> FeedbackMessageLevelComparator feedbackMessageLevelComparator, final 
> int
> feedbackMessageThresholdLevel) {
>                super();
>                if
> (feedbackMessageLevelComparator.isLowerAndUpperBoundRequired) {
>                        throw new IllegalArgumentException("This 
> feedbackMessageLevelComparator requires a lower/upper bound threshold 
> level and so it is not allowed within this constructor (see
javadoc).");
>                }
>                init(feedbackMessageLevelComparator,
> feedbackMessageThresholdLevel, LEVEL_NA);
>        }
>
>        /**
>         * Constructs a new ReuseOnFeedbackMessageStrategy. Accepts a 
> feedbackMessageLevelComparator that requires both a lower and upper 
> bound feedback level (typically used with a
>         * [EMAIL PROTECTED] FeedbackMessageLevelComparator#BETWEEN}
> feedbackMessageLevelComparator).
>         *
>         * @param feedbackMessageLevelComparator
>         *            the [EMAIL PROTECTED] FeedbackMessageLevelComparator} to 
> be
> used when comparing the active message with a lower and upper bound 
> threshold level
>         * @param lowerThresholdLevel
>         *            the threshold lower bound feedback message level
>         * @param upperThresholdLevel
>         *            the threshold upper bound feedback message level
>         */
>        public ReuseOnFeedbackMessageStrategy(final
> FeedbackMessageLevelComparator feedbackMessageLevelComparator, final 
> int lowerThresholdLevel, final int upperThresholdLevel) {
>                super();
>                if
> (!feedbackMessageLevelComparator.isLowerAndUpperBoundRequired) {
>                        throw new IllegalArgumentException(
>                                        "This 
> feedbackMessageLevelComparator does not require a lower/upper bound 
> threshold level and so it is not allowed within this constructor (see 
> javadoc).");
>                }
>                init(feedbackMessageLevelComparator,
> lowerThresholdLevel, upperThresholdLevel);
>        }
>
>        /**
>         * Initialized the ReuseOnFeedbackMessageStrategy.
>         *
>         * @param boundaryOperator
>         *            the [EMAIL PROTECTED] FeedbackMessageLevelComparator} to 
> be
> used when comparing the active message with the threshold
>         * @param lowerBoundThresholdLevel
>         *            the threshold lower bound feedback message level
> or a single threshold for operators that only require one threshold 
> value (i.e. =, <, >, <=, or >=)
>         * @param upperBoundThresholdLevel
>         *            the threshold upper bound feedback message level
>         */
>        private final void init(final FeedbackMessageLevelComparator 
> boundaryOperator, final int lowerBoundThresholdLevel, final int
> upperBoundThresholdLevel) {
>                setFeedbackMessageLevelComparator(boundaryOperator);
>
> setFeedbackMessageThresholdLevel(lowerBoundThresholdLevel);
>                setUpperThresholdLevel(upperBoundThresholdLevel);
>        }
>
>        /**
>         * [EMAIL PROTECTED]
>         */
>        @SuppressWarnings("unchecked")
>        @Override
>        public final Iterator<Item> getItems(final IItemFactory 
> factory, final Iterator newModels, final Iterator existingItems) {
>                final List<Item> existingItemList = new 
> ArrayList<Item>();
>
>                while (existingItems.hasNext()) {
>                        existingItemList.add((Item) 
> existingItems.next());
>                }
>
>                return new Iterator<Item>() {
>                        private int index = 0;
>                        private transient Boolean hasMessage;
>
>                        /**
>                         * [EMAIL PROTECTED]
>                         */
>                        @Override
>                        public final boolean hasNext() {
>                                return newModels.hasNext();
>                        }
>
>                        /**
>                         * [EMAIL PROTECTED]
>                         */
>                        @Override
>                        public final Item next() {
>                                final IModel model = (IModel) 
> newModels.next();
>                                final Item item;
>
>                                if (hasMessage == null) {
>                                        hasMessage = 
> hasFeedbackMessage();
>                                }
>                                if (hasMessage &&
> !existingItemList.isEmpty()) {
>                                        // validation error was found, 
> set existing items
>                                        item = 
> existingItemList.get(index);
>                                        item.setIndex(index);
>                                } else {
>                                        // no validation error, set new

> items
>                                        item = factory.newItem(index, 
> model);
>                                }
>                                index++;
>
>                                if (!hasNext()) {
>                                        hasMessage = null;
>                                }
>                                return item;
>                        }
>
>                        /**
>                         * [EMAIL PROTECTED]
>                         */
>                        @Override
>                        public final void remove() {
>                                throw new 
> UnsupportedOperationException();
>                        }
>                };
>        }
>
>        /**
>         * Search through the wicket feed back messages within the 
> session and determine if there are any messages that meet the given 
> criteria based on the supplied feedbackMessageLevelComparator and
>         * feedbackMessage threshold level.
>         *
>         * @return true if a feedbackMessage was found within the 
> session that meets the criteria specified.
>         */
>        @SuppressWarnings("unchecked")
>        private final boolean hasFeedbackMessage() {
>                FeedbackMessage feedbackMessage;
>                for (final Iterator<FeedbackMessage> iter = 
> Session.get().getFeedbackMessages().iterator(); iter.hasNext();) {
>                        feedbackMessage = iter.next();
>                        if
> (getFeedbackMessageLevelComparator().compare(feedbackMessage,
> getFeedbackMessageThresholdLevel(), getUpperThresholdLevel())) {
>                                onFeedbackMessage(feedbackMessage);
>                                return true;
>                        }
>                }
>                return false;
>        }
>
>        /**
>         * Called in the event that a feedback message was found
>         *
>         * @param feedbackMessage
>         *            the found feedback message
>         */
>        protected void onFeedbackMessage(final FeedbackMessage
> feedbackMessage) {
>                // override if needed
>        }
>
>        /**
>         * Gets the feedbackMessageLevelComparator.
>         *
>         * @return the feedbackMessageLevelComparator to get.
>         */
>        private final FeedbackMessageLevelComparator
> getFeedbackMessageLevelComparator() {
>                return feedbackMessageLevelComparator;
>        }
>
>        /**
>         * Sets the feedbackMessageLevelComparator.
>         *
>         * @param feedbackMessageLevelComparator
>         *            the feedbackMessageLevelComparator to set
>         */
>        private final void setFeedbackMessageLevelComparator(final
> FeedbackMessageLevelComparator feedbackMessageLevelComparator) {
>                this.feedbackMessageLevelComparator = 
> feedbackMessageLevelComparator;
>        }
>
>        /**
>         * Gets the feed back message threshold level.
>         *
>         * @return the feedbackMessageThresholdLevel to get.
>         */
>        public final int getFeedbackMessageThresholdLevel() {
>                return feedbackMessageThresholdLevel;
>        }
>
>        /**
>         * Sets the feedback message threshold level.
>         *
>         * @param feedbackMessageThresholdLevel
>         *            the feedbackMessageThresholdLevel to set
>         */
>        public final void setFeedbackMessageThresholdLevel(final int
> feedbackMessageThresholdLevel) {
>                this.feedbackMessageThresholdLevel = 
> feedbackMessageThresholdLevel;
>        }
>
>        /**
>         * Gets the upper threshold level.
>         *
>         * @return the upperThresholdLevel to get.
>         */
>        private final int getUpperThresholdLevel() {
>                return upperThresholdLevel;
>        }
>
>        /**
>         * Sets the upper threshold level.
>         *
>         * @param upperThresholdLevel
>         *            the upperThresholdLevel to set.
>         */
>        private final void setUpperThresholdLevel(final int
> upperThresholdLevel) {
>                // TODO : Consider exposing Upper threshold level to 
> outside.
>                this.upperThresholdLevel = upperThresholdLevel;
>        }
>
>        /**
>         * Comparators used in feedback message level comparison : <br 
> />
>         * <ol>
>         * <li>[EMAIL PROTECTED] FeedbackMessageLevelComparator#EQ}</li>
>         * <li>[EMAIL PROTECTED] FeedbackMessageLevelComparator#LT}</li>
>         * <li>[EMAIL PROTECTED] FeedbackMessageLevelComparator#GT}</li>
>         * <li>[EMAIL PROTECTED] FeedbackMessageLevelComparator#LTE}</li>
>         * <li>[EMAIL PROTECTED] FeedbackMessageLevelComparator#GTE}</li>
>         * <li>[EMAIL PROTECTED] FeedbackMessageLevelComparator#BETWEEN}</li>
>         * </ol>
>         */
>        public enum FeedbackMessageLevelComparator {
>
>                /**
>                 * EQUAL FeedbackMessageLevelComparator. ([EMAIL PROTECTED]
=}).
>                 */
>                EQ(false),
>
>                /**
>                 * Less than feedbackMessageLevelComparator. ([EMAIL PROTECTED]

> <}).
>                 */
>                LT(false),
>
>                /**
>                 * Greater than feedbackMessageLevelComparator 
> ([EMAIL PROTECTED] >}).
>                 */
>                GT(false),
>
>                /**
>                 * Less than equal to feedbackMessageLevelComparator 
> ([EMAIL PROTECTED] <=}).
>                 */
>                LTE(false),
>
>                /**
>                 * Greater than or equal to 
> feedbackMessageLevelComparator ([EMAIL PROTECTED] >=}).
>                 */
>                GTE(false),
>
>                /**
>                 * Between feedbackMessageLevelComparator.Between (and
> including) a lower and upper bound threshold
>                 */
>                BETWEEN(true);
>
>                /**
>                 * flag indicating if lower and upper bound are to be 
> specified.
>                 */
>                private boolean isLowerAndUpperBoundRequired;
>
>                /**
>                 * Default constructor.
>                 *
>                 * @param isLowerAndUpperBoundRequired
>                 *            flag to indicate whether or not both a
> lower and upper bound value are required for this 
> feedbackMessageLevelComparator.
>                 */
>                private FeedbackMessageLevelComparator(final boolean
> isLowerAndUpperBoundRequired) {
>                        this.isLowerAndUpperBoundRequired = 
> isLowerAndUpperBoundRequired;
>                }
>
>                /**
>                 * @return true if this feedbackMessageLevelComparator 
> requires both a lower and upper bound threshold level. Otherwise the 
> feedbackMessageLevelComparator only requires a single bound value.
>                 */
>                public final boolean isLowerAndUpperBoundRequired() {
>                        return isLowerAndUpperBoundRequired;
>                }
>
>                /**
>                 * Compares the received active feedbackMessage's level

> based on the feedbackMessageLevelComparator.
>                 *
>                 * @param activeMessage
>                 *            the FeedbackMessage to compare
>                 * @param thresholdLevel
>                 *            the threshold level to be compared (may
> act as lower bound threshold for comparators that require lower/upper)
>                 * @param upperBoundThresholdLevel
>                 *            the threshold upper bound feedback
message
> level (used only for comparators that require it)
>                 *
>                 * @return true if the operation is satisfied based on 
> the feedbackMessageLevelComparator (i.e. 500 == 500)
>                 */
>                public final boolean compare(final FeedbackMessage 
> activeMessage, final int thresholdLevel, final int
> upperBoundThresholdLevel) {
>                        final boolean isValid;
>                        switch (this) {
>                        case EQ:
>                                isValid = activeMessage.getLevel() == 
> thresholdLevel;
>                                break;
>                        case LT:
>                                isValid = activeMessage.getLevel() < 
> thresholdLevel;
>                                break;
>                        case GT:
>                                isValid = activeMessage.getLevel() > 
> thresholdLevel;
>                                break;
>                        case LTE:
>                                isValid = activeMessage.getLevel() <= 
> thresholdLevel;
>                                break;
>                        case GTE:
>                                isValid = activeMessage.getLevel() >= 
> thresholdLevel;
>                                break;
>                        case BETWEEN:
>                                isValid = thresholdLevel <=
> activeMessage.getLevel() && activeMessage.getLevel() <= 
> upperBoundThresholdLevel;
>                                break;
>                        default:
>                                isValid = false;
>                        }
>                        return isValid;
>                }
>        }
> }
>
> -----Original Message-----
> From: Igor Vaynberg [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, August 06, 2008 11:04 AM
> To: users@wicket.apache.org
> Subject: Re: ListView in Forms
>
> add a feedbackpanel and see if there are any validation errors
>
> -igor
>
> On Wed, Aug 6, 2008 at 7:19 AM, Markus Haspl <[EMAIL PROTECTED]>
wrote:
>> hi,
>>
>> first, i'm a very newbie to wicket... I want to add a ListView in a
> Form.
>> The ListView has two Texfields and one Checkbox each row. When i 
>> submit the form the values are still the old ones.
>>
>> here the code:
>>
>> private class InputForm extends Form {
>>
>>
>>
>>  IModel pluginPropertiesModel;
>>
>>  public InputForm(String id, IPlugin plugin){
>>            super(id);
>>
>>
>>
>>            final IPlugin Iplugin = plugin;
>>
>>            pluginPropertiesModel = new LoadableDetachableModel(){
>>                public Object load()
>>                {
>>                    log.debug("load the Model");
>>                    Iplugin.loadPluginProperties();
>>                    return pluginProperties;
>>                }
>>            };
>>
>>            ListView propertiesList = new ListView("pluginRepeater",
>> pluginPropertiesModel) {
>>
>>                @Override
>>                public void populateItem(ListItem item)
>>                {
>>                    PluginProperties pluginProperties = 
>> (PluginProperties)item.getModelObject();
>>                    TextField propertiesName = new 
>> TextField("name",new
>
>> Model(pluginProperties.getName()));
>>                    TextField propertiesValue = new 
>> TextField("value",new Model(pluginProperties.getValue()));
>>                    CheckBox propertiesDefault = new 
>> CheckBox("defaultProperty",new
> Model(pluginProperties.isDefaultProperty()));
>>                    item.add(propertiesName);
>>                    item.add(propertiesValue);
>>                    item.add(propertiesDefault);
>>                }
>>            };
>>            propertiesList.setReuseItems(true);
>>            add(propertiesList);
>>
>>        add(new Button("saveButton"));
>>
>>
>>        }
>>
>>        public void onSubmit()
>>        {
>>            List<PluginProperties> pluginProperties = 
>> (List<PluginProperties>)pluginPropertiesModel.getObject();
>>            for(PluginProperties property:pluginProperties){
>>                info(""+property.getName()+": "+property.getValue()+"
>> == "+property.isDefaultProperty());
>>                log.debug(""+property.getName()+":
> "+property.getValue()+"
>> == "+property.isDefaultProperty());
>>            }
>>
>>
>>
>>
>>        }
>>    }
>>
>>
>> thanks in advance
>> markus
>>
>
> ---------------------------------------------------------------------
> 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