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<[email protected]> 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<[email protected]> 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<[email protected]>
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<[email protected]>
For additional commands, e-mail: [email protected]
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<[email protected]>
For additional commands, e-mail: [email protected]
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<[email protected]>
For additional commands, e-mail: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]