Hi,
I am using wicket. I have a page with one links which increase the counter
value based on user click on the link, for all these actions I am using Ajax.
For instance user click 5 times on link the counter shows value 5. It is ok but
if I click on browsers refresh button all changes are lost and it shows the
counter value 0 instead of 5. How to handle the refresh button?
Please find the code below.
TestPage.java
import org.apache.wicket.PageParameters;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
public class TestPage extends WebPage {
public TestPage(PageParameters parameters) {
super(parameters);
final Model<Integer> modell = new Model<Integer>(new
Integer(0));
// Slik at telleverdien legges i session
setDefaultModel(modell);
final Label telleLabel = new Label("teller", modell);
telleLabel.setOutputMarkupId(true);
final Label hashcodeLabel = new Label("hashcode", new
IModel<String>() {
private static final long serialVersionUID = 1L;
public String getObject() {
return
String.valueOf(System.identityHashCode(TestPage.this));
}
public void setObject(String object) {
/* NOOP */
}
public void detach() {
/* NOOP */
}
});
hashcodeLabel.setOutputMarkupId(true);
add(telleLabel);
add(new AjaxLink<Integer>("link", modell) {
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
// Øk det delte modellobjektet
Integer tall = getModelObject();
int verdi = tall.intValue() + 1;
tall = new Integer(verdi);
setModelObject(tall);
// Fortell klienten hvilken komponent som skal
oppdateres
target.addComponent(telleLabel);
target.addComponent(hashcodeLabel);
}
});
add(hashcodeLabel);
add(new AjaxCheckBox("versioned", new
Model<Boolean>(Boolean.TRUE)) {
private static final long serialVersionUID = 1L;
@Override
protected void onUpdate(AjaxRequestTarget target) {
setVersioned(this.getModelObject().booleanValue());
}
});
setVersioned(true);
}
}
TestApplication.java
import org.apache.wicket.Page;
import org.apache.wicket.Request;
import org.apache.wicket.Response;
import org.apache.wicket.Session;
import org.apache.wicket.protocol.http.WebApplication;
public class TestApplication extends WebApplication {
@Override
public Class<? extends Page> getHomePage() {
return TestPage.class;
}
}
TestPage.html
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:wicket="http://wicket.apache.org/">
<!-- Basis-side som inneholder navigasjonssti -->
<head>
<title>Testside</title>
</head>
<body>
<a href="#" style="font: bold 12pt 'Arial'"
wicket:id="link">+</a> <span wicket:id="teller">0</span>
<p class="portlet-font">Denne portleten har hashCode lik <b
wicket:id="hashcode">34563</b>.</p>
<p class="portlet-font"><input type="checkbox"
class="portlet-form-field" wicket:id="versioned"> <span
class="portlet-form-label">Versjonert</span></p>
</body>
</html>
Please suggest me the way how to handle the refresh button problem.
Please do the needful.
Med vennlig hilsen
MUKESH SINGH
CAPGEMINI Consultant
Arrive AS
T (+47) 46 47 90 16
E-post: [EMAIL PROTECTED]
http://servicedesk.arrive.no