java - how to get the scope of wicket ids when defined inside a submit button -
i have 2 text boxes read input. 1 time page submitted, display info in table. facing issue while load widget; says dataview not defined , table id not defined. however, defined within submit method. code below. please help me.
homepage.java
public class homepage extends webpage { private string membernumber,lossnumber; arraylist <assignmentdb> list = new arraylist<assignmentdb>(); int flag=0; public homepage(){ list.add(new assignmentdb("1234","001","1678","10/june//2013")); propertymodel memberidmodel=new propertymodel(this,"membernumber"); propertymodel lossidmodel=new propertymodel(this,"lossnumber"); textfield memberidfield = new textfield("memberid",memberidmodel); textfield lossidfield = new textfield("lossid",lossidmodel); form form=new form("form1"){ public void onsubmit(){ list.add(new assignmentdb("1234","001","1678","10/june//2013")); list.add(new assignmentdb("1235","003","1678","13/june//2013")); dataview<list<assignmentdb>> dataview = new dataview<list<assignmentdb>>("assignmentlist", new listdataprovider(list)) { public void populateitem(item<list<assignmentdb>> item) { assignmentdb lists = (assignmentdb) item.getmodelobject(); if (lists.getmemberid().equals(membernumber)){ if(lists.getlossid().equals(lossnumber)){ flag=1; item.add(new label("aomemberid", lists.getmemberid())); item.add(new label("aolossid", lists.getlossid())); item.add(new label("aoassignmentid", lists.getassignmentid())); item.add(new label("aodol", lists.getdol())); } } } }; if (flag==0) system.out.println("no matches"); form.add(dataview); form.add(memberidfield); form.add(lossidfield); add(form); } public void setmembernumber(string x) { this.membernumber=x; } public void setlossnumber(string x) { this.lossnumber=x; } public string getmembernumber(){ homecoming this.membernumber; } public string getlossnumber(){ homecoming this.lossnumber; } } homepage.html
<!doctype html public "-//w3c//dtd html 4.01 transitional//en" "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>estimatesearcher</title> </head> <body> <form wicket:id="form1"> fellow member number <input type="text" wicket:id="memberid"><br/> loss number <input type="text" wicket:id="lossid"><br/> <input type="submit" value=search> <table border="1"> <tr> <th>memberno</th> <th>lossno</th> <th>assignmentno</th> <th>dol</th> </tr> <div wicket:id="assignmentlist"> <tr> <td wicket:id="aomemberid"></td> <td wicket:id="aolossid"></td> <td wicket:id="aoassignmentid"></td> //<td> <a href="#" wicket:id="assignmentidlink"><span wicket:id="aoassignmentid">[address]</span></a> </td> <td wicket:id="aodol"></td> </tr> </div> </table> </form> </body> </html>
you need add together table outside submit function because html wicket:id's should filled when page rendered (except ones invisible parent). can create , add together dataview empty list , utilize ajax update list , rerender list:
form.add(new ajaxbutton("ajax-button", form) { @override protected void onsubmit(ajaxrequesttarget target, form<?> form) { list.add(new assignmentdb("1234","001","1678","10/june//2013")); list.add(new assignmentdb("1235","003","1678","13/june//2013")); // repaint dataview target.add(dataview); } @override protected void onerror(ajaxrequesttarget target, form<?> form) { // error handling } }); second easier thing can create constructor list want show , setresponspage(new homepage(listyouwanttouse)); in forms onsubmit().
java wicket
No comments:
Post a Comment