heh, this is a reallly bad idea. suppose you have textfield<integer> and the user enters "a". that would result in a conversion exception represented by the feedback message - which you cleared. so when you call updatemodels() you will get null set on the model...
-igor On Fri, Aug 12, 2011 at 7:28 AM, Mike Mander <wicket-m...@gmx.de> wrote: > With an annotation on my button i can go over the name cluttering issue > > import java.lang.annotation.Documented; > import java.lang.annotation.ElementType; > import java.lang.annotation.Inherited; > import java.lang.annotation.Retention; > import java.lang.annotation.RetentionPolicy; > import java.lang.annotation.Target; > > @Target({ ElementType.TYPE }) > @Retention(RetentionPolicy.RUNTIME) > @Inherited > @Documented > public @interface DirtySubmitter { > > } > > and in the form.onValidate > @Override > protected void onValidate() { > super.onValidate(); > IFormSubmittingComponent button = findSubmittingButtonAllOver(this); > if (button != null && > button.getClass().isAnnotationPresent(DirtySubmitter.class)) { > getSession().cleanupFeedbackMessages(); > } > } > > So this solution is a bit more reusable and flexible enough for me. All > works now. > Thanks for your great support. > Mike > >> onValidate seems a way to go. It leads to a not soo reusable solution like >> your ReuseManager >> but it works. >> >> I simply override onConfigure in Form and did that >> @Override >> protected void onValidate() { >> super.onValidate(); >> if >> (findSubmittingButton().getInputName().equals("backToBasket")) { >> getSession().cleanupFeedbackMessages(); >> } >> } >> >> because i use MultiForm and the child forms will be procceeded after the >> parent i had to override onConfigure there to >> >> @Override >> protected void onValidate() { >> super.onValidate(); >> IFormSubmittingComponent button = >> findSubmittingButtonAllOver(this); >> if (button != null && button.getInputName().equals("backToBasket")) >> { >> getSession().cleanupFeedbackMessages(); >> } >> } >> >> findSubmittingButtonAllOver is a method in the base form i use >> >> protected IFormSubmittingComponent findSubmittingButtonAllOver(Form<?> >> form) { >> if (form != null) { >> IFormSubmittingComponent result = form.findSubmittingButton(); >> return result == null ? >> findSubmittingButtonAllOver(findParent(Form.class)) : result; >> } >> return null; >> } >> >> Now i have to find a way to provide the inputname of submitting component. >> Maybe an annotation to the "backToBasket" button is the solution here. But >> for now the cluttering hard-coded button name is ok for me. >> >> Thanks >> Mike >> >>> I checked Form. There is an onValidate. Maybe i can clear the feedback >>> messages there. >>> Will try it. >>>> >>>> But if wicket should support it out of the box there is maybe another >>>> way. >>>> If we could get a method onBeforeFormSubmit() in form there would be >>>> an access point to configure validators in all childs. >>>> In default nothing is to do - means leave form as configured at creation >>>> time. >>>> If it's nessecary i could set a flag or something to validate components >>>> conditional. >>>> >>>> Form.java >>>> ... >>>> >>>> protected void onBeforeFormSubmit() { >>>> if (findSubmittingButton.getId().equals("mySpecialButton")) { >>>> setGlobalFlag(true); >>>> } else { >>>> setGlobalFlag(false); >>>> } >>>> } >>>> >>>> and in Validator >>>> MyValidator.java >>>> void validate(IValidatable<T> validatable) { >>>> if (!getGlobalFlag()) { >>>> doValidation(); >>>> } >>>> } >>>> >>>> That would make it possibly unnessecary to store the component >>>> references in session. >>>> Or are there other usecases i don't see for ReuseManager. >>>> >>>>> AH.... not to say that I would mind if wicket would handle >>>>> reusemanager itself.. I wonder if it is there in 1.5? Hmm.. I think a >>>>> proposal should be added to the whishlist. >>>>> >>>>> ** >>>>> Martin >>>>> >>>>> 2011/8/12 Martin Makundi<martin.maku...@koodaripalvelut.com>: >>>>>> >>>>>> The Form way is a quirk way to do it in the first place. You are not >>>>>> supposed to update model before validation etc. so you will run into >>>>>> lots of troubles that way. >>>>>> >>>>>> Reusemanager simply works like wicket normally works when you validate >>>>>> and repaint the screen with rawInput values. It just keeps those >>>>>> components and copies the old rawInput value which was persisted >>>>>> during incomplete submit. >>>>>> >>>>>> ** >>>>>> Martin >>>>>> >>>>>> 2011/8/12 Mike Mander<wicket-m...@gmx.de>: >>>>>>> >>>>>>> Thanks Martin, >>>>>>> >>>>>>> now it works as expected. I don't have a clue how but it is. >>>>>>> I really would be interested in knowing why the reusemanager gets the >>>>>>> data >>>>>>> and the form not. >>>>>>> >>>>>>> I think i will start a debugging session at weekend :-) >>>>>>> >>>>>>> Maybe we should use this scenario and put it in the wiki? Especially >>>>>>> in shop >>>>>>> environments it's >>>>>>> a big frustration point if form values is lost only because i want to >>>>>>> see >>>>>>> what i typed in last page. >>>>>>> And ask the user to provide all data until validation passes is >>>>>>> decreasing >>>>>>> the conversion rate :-( >>>>>>> So maybe others will benefit from the found / working solution to. >>>>>>> >>>>>>> Thanks again >>>>>>> Mike >>>>>>> >>>>>>>> This is how you can do it with reusemanager: >>>>>>>> >>>>>>>> >>>>>>>> HomePage: >>>>>>>> public class HomePage extends WebPage { >>>>>>>> public HomePage(final PageParameters parameters) { >>>>>>>> Form<Void> form; >>>>>>>> add(form = new Form<Void>("form")); >>>>>>>> >>>>>>>> >>>>>>>> form.add(WicketSession.get().getReuseManager().rememberOrReuseAndProvideFeedback(HomePage.class.getSimpleName() >>>>>>>> + "tf", new TextField<String>("tf", Model.of("")))); >>>>>>>> form.add(new Button("doMemorizeInvalidData") { >>>>>>>> @Override >>>>>>>> public void onSubmit() { >>>>>>>> super.onSubmit(); >>>>>>>> setResponsePage(OtherPage.class); >>>>>>>> setRedirect(true); >>>>>>>> }; >>>>>>>> }.setDefaultFormProcessing(false)); >>>>>>>> form.add(new Button("doUpdateData") { >>>>>>>> @Override >>>>>>>> public void onSubmit() { >>>>>>>> super.onSubmit(); >>>>>>>> setResponsePage(OtherPage.class); >>>>>>>> setRedirect(true); >>>>>>>> }; >>>>>>>> }); >>>>>>>> } >>>>>>>> } >>>>>>>> >>>>>>>> >>>>>>>> Reusemanager holder (can be session, can be something else): >>>>>>>> >>>>>>>> public class WicketSession extends WebSession { >>>>>>>> /** >>>>>>>> * >>>>>>>> */ >>>>>>>> private static final long serialVersionUID = 1L; >>>>>>>> >>>>>>>> private final FormComponentReuseManager reuseManager = new >>>>>>>> FormComponentReuseManager(); >>>>>>>> >>>>>>>> public FormComponentReuseManager getReuseManager() { >>>>>>>> return reuseManager; >>>>>>>> } >>>>>>>> >>>>>>>> /** >>>>>>>> * @param request >>>>>>>> */ >>>>>>>> public WicketSession(Request request) { >>>>>>>> super(request); >>>>>>>> } >>>>>>>> >>>>>>>> /** >>>>>>>> * @return WicketSession >>>>>>>> */ >>>>>>>> public static WicketSession get() { >>>>>>>> return (WicketSession) Session.get(); >>>>>>>> } >>>>>>>> } >>>>>>>> >>>>>>>> >>>>>>>> ** >>>>>>>> Martin >>>>>>>> >>>>>>>> 2011/8/12 Mike Mander<wicket-m...@gmx.de>: >>>>>>>>> >>>>>>>>> That is not working to. I've created a quickstart for this. >>>>>>>>> Scenario is simplified. HomePage gets the data and has two submit >>>>>>>>> buttons. >>>>>>>>> Do i press the "submit" and click back on other page data are >>>>>>>>> present >>>>>>>>> (submitted). >>>>>>>>> Do i press the "invalid submit" and click back on other page data >>>>>>>>> are >>>>>>>>> lost. >>>>>>>>> >>>>>>>>> Here is the code >>>>>>>>> >>>>>>>>> DirtyForm.java >>>>>>>>> <code> >>>>>>>>> import org.apache.wicket.markup.html.form.Form; >>>>>>>>> import org.apache.wicket.model.IModel; >>>>>>>>> >>>>>>>>> public class DirtyForm<T> extends Form<T> { >>>>>>>>> >>>>>>>>> public DirtyForm(String id, IModel<T> model) { >>>>>>>>> super(id, model); >>>>>>>>> } >>>>>>>>> >>>>>>>>> public final void submitTheInvalidDataToMySession() { >>>>>>>>> //this seems not to be the complete solution >>>>>>>>> updateFormComponentModels(); >>>>>>>>> } >>>>>>>>> } >>>>>>>>> </code> >>>>>>>>> >>>>>>>>> HomePage.java >>>>>>>>> <code> >>>>>>>>> >>>>>>>>> import org.apache.wicket.PageParameters; >>>>>>>>> import org.apache.wicket.markup.html.WebPage; >>>>>>>>> import org.apache.wicket.markup.html.form.Button; >>>>>>>>> import org.apache.wicket.markup.html.form.TextField; >>>>>>>>> import org.apache.wicket.model.PropertyModel; >>>>>>>>> >>>>>>>>> public class HomePage extends WebPage { >>>>>>>>> >>>>>>>>> public HomePage(final PageParameters parameters) { >>>>>>>>> >>>>>>>>> DirtyForm<String> form; >>>>>>>>> add(form = new DirtyForm<String>("form", new >>>>>>>>> PropertyModel<String>(new PropertyModel<Object>(this, "session"), >>>>>>>>> "myBusinessValue")); >>>>>>>>> form.add(new TextField<String>("tf", form.getModel())); >>>>>>>>> form.add(new Button("doMemorizeInvalidData") { >>>>>>>>> @Override >>>>>>>>> public void onSubmit() { >>>>>>>>> super.onSubmit(); >>>>>>>>> DirtyForm<?> f = findParent(DirtyForm.class); >>>>>>>>> f.submitTheInvalidDataToMySession(); >>>>>>>>> setResponsePage(OtherPage.class); >>>>>>>>> setRedirect(true); >>>>>>>>> }; >>>>>>>>> }.setDefaultFormProcessing(false)); >>>>>>>>> form.add(new Button("doUpdateData") { >>>>>>>>> @Override >>>>>>>>> public void onSubmit() { >>>>>>>>> super.onSubmit(); >>>>>>>>> setResponsePage(OtherPage.class); >>>>>>>>> setRedirect(true); >>>>>>>>> }; >>>>>>>>> }); >>>>>>>>> } >>>>>>>>> } >>>>>>>>> </code> >>>>>>>>> >>>>>>>>> HomePage.html >>>>>>>>> <code> >>>>>>>>> <html >>>>>>>>> >>>>>>>>> >>>>>>>>> xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd" >>>>>>>>> <head> >>>>>>>>> <title>Wicket Quickstart Archetype Homepage</title> >>>>>>>>> </head> >>>>>>>>> <body> >>>>>>>>> <strong>Wicket Quickstart Archetype Homepage</strong> >>>>>>>>> <br/><br/> >>>>>>>>> <div> >>>>>>>>> <form wicket:id="form"> >>>>>>>>> Value: >>>>>>>>> <input type="text" wicket:id="tf" /> >>>>>>>>> <input type="submit" wicket:id="doMemorizeInvalidData" >>>>>>>>> value="invalid >>>>>>>>> submit" /> >>>>>>>>> <input type="submit" wicket:id="doUpdateData" value="submit" /> >>>>>>>>> </form> >>>>>>>>> </div> >>>>>>>>> </body> >>>>>>>>> </html> >>>>>>>>> </code> >>>>>>>>> >>>>>>>>> MySession.java >>>>>>>>> <code> >>>>>>>>> import org.apache.wicket.Request; >>>>>>>>> import org.apache.wicket.protocol.http.WebSession; >>>>>>>>> >>>>>>>>> public class MySession extends WebSession { >>>>>>>>> >>>>>>>>> private String myBusinessValue = null; >>>>>>>>> >>>>>>>>> public MySession(Request request) { >>>>>>>>> super(request); >>>>>>>>> } >>>>>>>>> >>>>>>>>> public void setMyBusinessValue(String myBusinessValue) { >>>>>>>>> this.myBusinessValue = myBusinessValue; >>>>>>>>> } >>>>>>>>> >>>>>>>>> public String getMyBusinessValue() { >>>>>>>>> return myBusinessValue; >>>>>>>>> } >>>>>>>>> } >>>>>>>>> </code> >>>>>>>>> >>>>>>>>> OtherPage.java >>>>>>>>> <code> >>>>>>>>> import org.apache.wicket.markup.html.WebPage; >>>>>>>>> >>>>>>>>> public class OtherPage extends WebPage { >>>>>>>>> >>>>>>>>> public OtherPage() { >>>>>>>>> } >>>>>>>>> } >>>>>>>>> </code> >>>>>>>>> >>>>>>>>> OtherPage.html >>>>>>>>> <code> >>>>>>>>> <html >>>>>>>>> >>>>>>>>> >>>>>>>>> xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd" >>>>>>>>> <head> >>>>>>>>> <title>Wicket Quickstart Archetype Homepage</title> >>>>>>>>> </head> >>>>>>>>> <body> >>>>>>>>> <strong>Wicket Quickstart Archetype Homepage</strong> >>>>>>>>> <br/><br/> >>>>>>>>> <a href="/">Back</a> >>>>>>>>> </body> >>>>>>>>> </html> >>>>>>>>> </code> >>>>>>>>> >>>>>>>>> WicketApplication.java >>>>>>>>> <code> >>>>>>>>> import org.apache.wicket.Request; >>>>>>>>> import org.apache.wicket.Response; >>>>>>>>> import org.apache.wicket.Session; >>>>>>>>> import org.apache.wicket.protocol.http.WebApplication; >>>>>>>>> >>>>>>>>> public class WicketApplication extends WebApplication { >>>>>>>>> @Override >>>>>>>>> public Class<HomePage> getHomePage() { >>>>>>>>> return HomePage.class; >>>>>>>>> } >>>>>>>>> >>>>>>>>> @Override >>>>>>>>> public Session newSession(Request request, Response response) { >>>>>>>>> return new MySession(request); >>>>>>>>> } >>>>>>>>> } >>>>>>>>> </code> >>>>>>>>> >>>>>>>>>> In your GoBack button's submit method (dpf = false), call >>>>>>>>>> >>>>>>>>>> form.updateFormComponentModels() >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> *Bruno Borges * >>>>>>>>>> www.brunoborges.com.br >>>>>>>>>> +55 21 76727099 >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Thu, Aug 11, 2011 at 12:08 PM, Mike Mander<wicket-m...@gmx.de> >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>>> Am 11.08.2011 16:54, schrieb Bruno Borges: >>>>>>>>>>> >>>>>>>>>>>> You want to go back to another page without having to fill the >>>>>>>>>>>> form, >>>>>>>>>>>> but >>>>>>>>>>>> you >>>>>>>>>>>> also don't want to lose data you typed in in the previous >>>>>>>>>>>> screen? >>>>>>>>>>>> Seems >>>>>>>>>>>> weird to me. >>>>>>>>>>>> >>>>>>>>>>>> Have you considered to add Ajax update behaviour? onBlur of >>>>>>>>>>>> components, >>>>>>>>>>>> you >>>>>>>>>>>> could update the model of each component. >>>>>>>>>>>> *Bruno Borges* >>>>>>>>>>>> www.brunoborges.com.br >>>>>>>>>>>> +55 21 76727099 >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Thu, Aug 11, 2011 at 11:50 AM, Mike >>>>>>>>>>>> Mander<wicket-m...@gmx.de> >>>>>>>>>>>> wrote: >>>>>>>>>>>> >>>>>>>>>>>> Am 11.08.2011 16:36, schrieb Bruno Borges: >>>>>>>>>>>>> >>>>>>>>>>>>> Shouldn't you be submitting that button anyway? dfp = true >>>>>>>>>>>>>> >>>>>>>>>>>>>> *Bruno Borges* >>>>>>>>>>>>>> www.brunoborges.com.br >>>>>>>>>>>>>> +55 21 76727099 >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Thu, Aug 11, 2011 at 10:44 AM, Mike >>>>>>>>>>>>>> Mander<wicket-m...@gmx.de> >>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>> Hi, >>>>>>>>>>>>>> >>>>>>>>>>>>>>> i've added a domain model globally to my session. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> A form for editing this data is provided on page A. On this i >>>>>>>>>>>>>>> have >>>>>>>>>>>>>>> 2 >>>>>>>>>>>>>>> submit >>>>>>>>>>>>>>> buttons. One with setDefaultFormProcessing false (to previous >>>>>>>>>>>>>>> page) >>>>>>>>>>>>>>> and >>>>>>>>>>>>>>> one >>>>>>>>>>>>>>> with true (to next step). >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> If i press the main submit (next step | dfp = true) then >>>>>>>>>>>>>>> everything >>>>>>>>>>>>>>> works >>>>>>>>>>>>>>> as expected. If i press the other (previous page |dfp = >>>>>>>>>>>>>>> false) and >>>>>>>>>>>>>>> redirect >>>>>>>>>>>>>>> to Page A all data are lost. I'm absolutely aware of the >>>>>>>>>>>>>>> issue that >>>>>>>>>>>>>>> false >>>>>>>>>>>>>>> in >>>>>>>>>>>>>>> defaultFormProcessing is not submitting the data. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> But because i cannot reproduce the input changed part of the >>>>>>>>>>>>>>> form >>>>>>>>>>>>>>> processing, i can't submit the invalid data manually. Is >>>>>>>>>>>>>>> there any >>>>>>>>>>>>>>> way >>>>>>>>>>>>>>> to >>>>>>>>>>>>>>> achieve my goal? >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Thanks >>>>>>>>>>>>>>> Mike >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> ------------------------------******--------------------------**--** >>>>>>>>>>>>>>> --**--------- >>>>>>>>>>>>>>> To unsubscribe, e-mail: >>>>>>>>>>>>>>> users-unsubscribe@wicket.****apa**che.org< >>>>>>>>>>>>>>> http://apache.org**> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> <users-unsubscribe@**wicket.**apache.org<http://wicket.apache.org>< >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> users-unsubscribe@**wicket.apache.org<users-unsubscr...@wicket.apache.org> >>>>>>>>>>>>>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Then i can't goback to previous page without filling the >>>>>>>>>>>>>>> form. >>>>>>>>>>>>>>> >>>>>>>>>>>>>> The scenario is >>>>>>>>>>>>> >>>>>>>>>>>>> 1. goto basket >>>>>>>>>>>>> 2. goto checkout (Page A in post) enter some data >>>>>>>>>>>>> 3. goback to basket (dfp = false) validation should be bypassed >>>>>>>>>>>>> 4. goto checkout => all entered data are present >>>>>>>>>>>>> >>>>>>>>>>>>> But until now with this scenario i lost all data in step 4 >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks >>>>>>>>>>>>> Mike >>>>>>>>>>>>> >>>>>>>>>>>>> PS: I use buttons to stay in javascript-less mode :-) >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> ------------------------------****----------------------------** >>>>>>>>>>>>> --**--------- >>>>>>>>>>>>> To unsubscribe, e-mail: >>>>>>>>>>>>> users-unsubscribe@wicket.**apa**che.org<http://apache.org> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> <users-unsubscribe@**wicket.apache.org<users-unsubscr...@wicket.apache.org> >>>>>>>>>>>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Ajax is not an option - i have to stay javascript-less. >>>>>>>>>>> >>>>>>>>>>> You want to go back to another page without having to fill the >>>>>>>>>>> form, >>>>>>>>>>> but >>>>>>>>>>>> >>>>>>>>>>>> you >>>>>>>>>>>> also don't want to lose data you typed in in the previous >>>>>>>>>>>> screen? >>>>>>>>>>>> Seems >>>>>>>>>>>> weird to me. >>>>>>>>>>>> >>>>>>>>>>> Not the previous screen. The current screen. >>>>>>>>>>> >>>>>>>>>>> I come from basket. I goto checkout. I start typing. I think oops >>>>>>>>>>> what >>>>>>>>>>> was >>>>>>>>>>> the option in basket >>>>>>>>>>> and goback to basket (dfp = false). I check the basket option and >>>>>>>>>>> think >>>>>>>>>>> ok >>>>>>>>>>> let's go on checkout. >>>>>>>>>>> And on checkout i think - damn all typed data have gone. So i >>>>>>>>>>> leave the >>>>>>>>>>> shop. >>>>>>>>>>> >>>>>>>>>>> That's the scenario i try to catch. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Thanks >>>>>>>>>>> Mike >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> ------------------------------**------------------------------**--------- >>>>>>>>>>> To unsubscribe, e-mail: >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> users-unsubscribe@wicket.**apache.org<users-unsubscr...@wicket.apache.org> >>>>>>>>>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>> >>>>>>>>> --------------------------------------------------------------------- >>>>>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>>>>>>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> --------------------------------------------------------------------- >>>>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>>>>>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> --------------------------------------------------------------------- >>>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>>>>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>>>>> >>>>>>> >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>>> >>>>> >>>> >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>> >>>> >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>> For additional commands, e-mail: users-h...@wicket.apache.org >>> >>> >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >> For additional commands, e-mail: users-h...@wicket.apache.org >> >> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org