Hello, But that was it. The code contained both the txtName.setOutputMarkupId(true) and the txtName.add(new AjaxFormComponentUpdatingBehavior("change") { ...
I will paste all the code again (I have now only added the txtLink.setOutputMarkupId(true) and the TestForm.setOutputMarkupId(true); ) Thank you ==HTML code== <form wicket:id="testForm"> <table class="contenidoform" cellpadding=1 cellspacing=0 border="0" width="100%"> <tr> <th>Name:</th> <th colspan="3"> <input wicket:id="txtName" size="80"/> </th> </tr> <tr> <th> <span><a href="#" wicket:id="clearLink"><img src="images/img.gif" name="btnClear" /></a></span> </th> </tr> </table> </form> ==JAVA CODE== public class TestPage extends WebPage { private static final long serialVersionUID = 311508940740808005L; private static final Logger logger = LogManager.getLogger(TestPage.class); public TestPage(IModel<TestBean> model) { super(model); TestForm tst = new TestForm("testForm", model); tst.setOutputMarkupId(true); add(tst); } class TestForm extends Form<TestBean> { /** * */ private static final long serialVersionUID = 1L; public TestForm(String id, IModel<TestBean> model) { super(id, model); TextField<String> txtName = new TextField<String>("txtName", new PropertyModel<String>(getModelObject(), "name")); add(txtName); txtName.setOutputMarkupId(true); txtName.add(new AjaxFormComponentUpdatingBehavior("change") { private static final long serialVersionUID = 1654345477970524731L; @Override protected void onUpdate(AjaxRequestTarget target) { target.add(txtName); } }); AjaxLink<TestBean> clearLink = new AjaxLink<TestBean>("clearLink", model) { /** * */ private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { model.setObject(new TestBean()); TestForm.this.clearInput(); target.add(TestForm.this); } }; clearLink.setOutputMarkupId(true); add(clearLink); } @Override protected void onSubmit() { logger.info("OnSubmit"); } } } ==THE BEAN== import java.io.Serializable; public class TestBean implements Serializable{ /** * */ private static final long serialVersionUID = 1L; private String name; private String code; private Integer id; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } } On Fri, Oct 14, 2016 at 10:43 AM, Martin Grigorov <mgrigo...@apache.org> wrote: > We can only advise on the code that you give us. > Your real code may not work for many other reasons but since you give us > some incomplete copies of it we have no idea what is wrong. > > Martin Grigorov > Wicket Training and Consulting > https://twitter.com/mtgrigorov > > On Fri, Oct 14, 2016 at 9:33 AM, ganea iulia <superbiss...@gmail.com> > wrote: > > > Hello, > > > > The txtName field has the .setOutputMarkupId(true). > > I have also added it to the form. > > But it doesn't work howevere. > > I have event tested adding it to the txtLink, but still no change. > > > > However, the issue appears to come from the > > txtName.add(new AjaxFormComponentUpdatingBehavior("change") {...} > > > > If I comment out this part, the clear is done. > > But I need to have this behaviour kept. > > > > Could you please advise? > > Thank you > > > > > > On Fri, Oct 14, 2016 at 10:10 AM, Martin Grigorov <mgrigo...@apache.org> > > wrote: > > > > > On Fri, Oct 14, 2016 at 9:01 AM, ganea iulia <superbiss...@gmail.com> > > > wrote: > > > > > > > Hello, > > > > > > > > I'm using Wicket 7. > > > > > > > > Please help me with the following. > > > > > > > > I have a test form, with only one input text field on it. > > > > When pressing on a link, I need to have the values in the form > cleared > > > out. > > > > > > > > This is the html and java code, but I could not make it work, the > input > > > > field just won't clear. > > > > > > > > <form wicket:id="testForm"> > > > > <table class="contenidoform" cellpadding=1 cellspacing=0 border="0" > > > > width="100%"> > > > > <tr> > > > > <th>Name:</th> > > > > <th colspan="3"> > > > > <input wicket:id="txtName" size="80"/> > > > > </th> > > > > </tr> > > > > <tr> > > > > <th> > > > > <span><a href="#" wicket:id="clearLink"><img src="images/img.gif" > > > > name="btnClear" /></a></span> > > > > </th> > > > > </tr> > > > > </table> > > > > </form> > > > > > > > > > > > > > > > > public TestPage(IModel<TestBean> model, final ReturnObjectPage > > > returnPage) > > > > { > > > > super(model); > > > > this.returnPage = returnPage; > > > > > > > > > > Don't keep references to other pages. > > > Use PageReference instead. > > > > > > > > > > > > > > add(new TestForm("testForm", model)); > > > > > > > > } > > > > > > > > class TestForm extends Form<TestBean> { > > > > /** > > > > * > > > > */ > > > > private static final long serialVersionUID = 1L; > > > > > > > > > > > > public TestForm(String id, IModel<TestBean> model) { > > > > super(id, model); > > > > TextField<String> txtName = new TextField<String>("txtName", new > > > > PropertyModel<String>(getModelObject(), "name")); > > > > add(txtName); > > > > txtName.add(new AjaxFormComponentUpdatingBehavior("change") { > > > > private static final long serialVersionUID = 1654345477970524731L; > > > > > > > > @Override > > > > protected void onUpdate(AjaxRequestTarget target) { > > > > target.add(txtName); > > > > } > > > > > > > > }); > > > > txtName.setOutputMarkupId(true); > > > > AjaxLink<TestBean> clearLink = new AjaxLink<TestBean>("clearLink", > > > model) > > > > { > > > > /** > > > > * > > > > */ > > > > private static final long serialVersionUID = 1L; > > > > > > > > @Override > > > > public void onClick(AjaxRequestTarget target) { > > > > model.setObject(new TestBean()); > > > > TestForm.this.clearInput(); > > > > target.add(TestForm.this); > > > > target.add(txtName); > > > > > > > > > > 1. There is no need to add 'txtName' to the target because its parent > > > (TestForm) is added > > > 2. Neither of them have .setOutputMarkupId(true), so Wicket won't be > able > > > to update them in the DOM. It should even complain about this. > > > > > > > > > > } > > > > > > > > }; > > > > add(clearLink); > > > > } > > > > @Override > > > > protected void onSubmit() { > > > > > > > > logger.info("OnSubmit"); > > > > > > > > } > > > > } > > > > > > > > > >