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: [email protected]
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]