Thank you so much for these examples.
This is great.

On Thu, Oct 20, 2016 at 2:22 PM, Francois Meillet <
francois.meil...@gmail.com> wrote:

> Hi,
>
> Use a ListView.
>
> The model of the second form is not updated until the form is submitted.
> You need to perform a submit if you want to see this model updated, and
> the correct value for tst.getCheckedTestBeans().size().
>
> If you want to avoid the manual submit phase, you need to use Ajax.
>
> Please find here your code slightly modified.
>
> TestPage
> http://pastebin.com/DYNpeZLt
> TestPage.html
> http://pastebin.com/gFa6Z5ZS
> ModelForForm
> http://pastebin.com/EhjezBWJ
> Wrapper
> http://pastebin.com/8B7n68VH
>
>
> François
>
>
>
>
> > Le 20 oct. 2016 à 08:38, ganea iulia <superbiss...@gmail.com> a écrit :
> >
> > Hello, Thank you for the samples.
> > But I will explain again what I have:
> >
> > I have two forms on my page.
> > In the bottom form I have a RefreshingView component, with check all
> > checkbox in the header, and check components for each items.
> > In the top form there is a link, where I need to get the checked items
> from
> > the second form (the bottom form);
> >
> > This is what I have done:
> > For checkAll and the individual checks I have used CheckGroup,
> > CheckGroupSelector and Check.
> >
> > The issue is that because the refreshing view refreshes the model at
> every
> > server roundtrip, when I check on item, the check doesn't maintain it's
> > value, because it receives every time a new model.
> >
> > So this bit from the RefreshingView always returns a new model which
> makes
> > the checks to dissapera:
> > @Override
> > protected Iterator<IModel<TestBean>> getItemModels() {
> > List<TestBean> lst = SpringCtx.getAppDB(TestBeanDao.class).selectAll();
> > List<IModel<TestBean>> models = new ArrayList<IModel<TestBean>>();
> > for (TestBean tstSN:lst) {
> > IModel<TestBean> modTst = new Model<TestBean>(tstSN);
> > models.add(modTst);
> > }
> > return models.iterator();
> > }
> >
> >
> > Isn;t there any way that I can still use the CheckGroup and Check
> > components? As this comes easy when it is needed a CheckAll
> functionality.
> >
> > Thank you
> >
> > Here is the code:
> >
> > =Java code=
> >
> > private static final long serialVersionUID = 311508940740808005L;
> > private static final Logger logger = LogManager.getLogger(TestPage.
> class);
> > private TestForm tst;
> > public TestPage(IModel<TestBean> model) {
> > super(model);
> >
> > TestForm0 tst0 = new TestForm0("testForm0");
> > tst0.setOutputMarkupId(true);
> > add(tst0);
> > tst = new TestForm("testForm", model);
> > tst.setOutputMarkupId(true);
> > add(tst);
> >
> >
> > }
> >
> > class TestForm0 extends Form<TestBean> {
> >
> > /**
> > *
> > */
> > private static final long serialVersionUID = 1L;
> >
> > public TestForm0(String id) {
> > super(id);
> >
> > Link<TestadosSN> print = new Link<TestadosSN>("print") {
> > private static final long serialVersionUID = 15L;
> >
> > @Override
> > public void onClick() {
> > System.out.println("size=" + tst.getCheckedTestBeans().size());
> > }
> > };
> > add(print);
> > }
> > }
> > class TestForm extends Form<TestBean> {
> > /**
> > *
> > */
> > private static final long serialVersionUID = 1L;
> >
> > private List<TestBean> checkedTestBeans;
> > public List<TestBean> getCheckedTestBeans() {
> > return checkedTestBeans;
> > }
> >
> > public void setCheckedTestBeans(List<TestBean> checkedTestBeans) {
> > this.checkedTestBeans = checkedTestBeans;
> > }
> >
> > public TestForm(String id, IModel<TestBean> model) {
> > super(id, model);
> >
> > checkedTestBeans = new ArrayList<TestBean>();
> > 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);
> > }
> >
> > });
> >
> > ///
> > CheckGroup<TestBean> group = new CheckGroup<TestBean>("group1",
> > checkedTestBeans);
> > group.setOutputMarkupId(true);
> > group.add(new AjaxFormChoiceComponentUpdatingBehavior() {
> > private static final long serialVersionUID = 1654345477970524731L;
> >
> > @Override
> > protected void onUpdate(AjaxRequestTarget target) {
> > target.add(group);
> > }
> >
> > });
> > CheckGroupSelector cgs = new CheckGroupSelector("allCheck1");
> > group.add(cgs);
> > final WebMarkupContainer itemsContainer = new
> > WebMarkupContainer("itemsContainer1");
> > itemsContainer.setOutputMarkupId(true);
> > itemsContainer.add(new RefreshingView<TestBean>("forEachItem1") {
> > /**
> > *
> > */
> > private static final long serialVersionUID = 1L;
> > @Override
> > protected Iterator<IModel<TestBean>> getItemModels() {
> > List<TestBean> lst = SpringCtx.getAppDB(TestBeanDao.class).selectAll();
> > List<IModel<TestBean>> models = new ArrayList<IModel<TestBean>>();
> > for (TestBean tstSN:lst) {
> > IModel<TestBean> modTst = new Model<TestBean>(tstSN);
> > models.add(modTst);
> > }
> > return models.iterator();
> > }
> >
> > @Override
> > protected void populateItem(Item<TestBean> item) {
> >
> >  item.add(new Label("itemName", new
> > PropertyModel<TestBean>(item.getModel(), "name")));
> >  item.add(new Label("itemCode", new
> > PropertyModel<TestBean>(item.getModel(), "code")));
> >  item.add(new Label("itemId", new PropertyModel<TestBean>(item.
> getModel(),
> > "id")));
> >  Check<TestBean> chk = new Check<TestBean>("itemCheck", item.getModel(),
> > group);
> >
> >  item.add(chk);
> > }
> >  });
> > group.add(itemsContainer);
> > add(group);
> > }
> >
> > @Override
> > protected void onSubmit() {
> >
> > logger.info <http://logger.info/>("OnSubmit");
> > System.out.println("size=" + checkedTestBeans.size());
> >
> > }
> > }
> >
> >
> > =HTML=
> > <form wicket:id="testForm0">
> >   <table class="contenidoform"  cellpadding=1 cellspacing=0 border="0"
> > width="100%">
> > <tr>
> > <th rowspan="3">
> > <a href="#" wicket:id="print"><img src="images/sprs/TAg-128.png"
> > title="prints blue tags for selected elements" /></a>
> > </th>
> > </tr>
> > </table>
> >    </form>
> > <form wicket:id="testForm">
> > <span wicket:id="group1">
> > <table class="contenidoform" cellpadding=1 cellspacing=0 border="0"
> > width="100%">
> > <thead>
> > <tr>
> > <th>Name</th>
> > <th>Code</th>
> > </tr>
> > <tr>
> > <th>Id</th>
> > <th rowspan="3"><input type="checkbox" wicket:id="allCheck1" title="check
> > all/uncheck all" /></th>
> > </tr>
> > </thead>
> > <tbody wicket:id="itemsContainer1">
> > <wicket:container wicket:id="forEachItem1">
> >   <tr >
> > <td wicket:id="itemName"></td>
> > <td wicket:id="itemCode"></td>
> > </tr>
> > <tr>
> > <td wicket:id="itemId"></td>
> > <td ><input type="checkbox" wicket:id="itemCheck" title="check to print"
> > /></td>
> > </tr>
> > </wicket:container>
> >   <tr>
> > <th align="left">&nbsp;</th>
> > <th align="left">
> > <div style="padding-left: 0%;display: inline;" />
> > <a><input type="image" src="images/Save.gif" class="submitButton"
> > name="btnSave" value="OK" /></a>
> > </th>
> >   </tr>
> > </tbody>
> > </table>
> > </span>
> > </form>
> >
> > On Wed, Oct 19, 2016 at 7:24 PM, Francois Meillet <
> > francois.meil...@gmail.com <mailto:francois.meil...@gmail.com>> wrote:
> >
> >> Have a look at
> >>
> >> https://cwiki.apache.org/confluence/display/WICKET/ <
> https://cwiki.apache.org/confluence/display/WICKET/>
> >> Listview+with+checkboxes <https://cwiki.apache.org/ <
> https://cwiki.apache.org/>
> >> confluence/display/WICKET/Listview+with+checkboxes>
> >>
> >> https://www.mkyong.com/wicket/wicket-multiple-checkboxes-example- <
> https://www.mkyong.com/wicket/wicket-multiple-checkboxes-example->
> >> checkboxmultiplechoice/ <https://www.mkyong.com/wicket/wicket-multiple-
> <https://www.mkyong.com/wicket/wicket-multiple->
> >> checkboxes-example-checkboxmultiplechoice/>
> >>
> >>
> >>
> >> François
> >>
> >>
> >>
> >>> Le 19 oct. 2016 à 16:11, ganea iulia <superbiss...@gmail.com <mailto:
> superbiss...@gmail.com>> a écrit :
> >>>
> >>> Hello,
> >>>
> >>> I have actually made this to work by adding this behaviour to the
> >>> checkgroup:
> >>>
> >>> group.add(new AjaxFormChoiceComponentUpdatingBehavior() {
> >>>               private static final long serialVersionUID =
> >>> 1654345477970524731L;
> >>>
> >>>               @Override
> >>>               protected void onUpdate(AjaxRequestTarget target) {
> >>>                   target.add(group);
> >>>               }
> >>>
> >>>           });
> >>>
> >>> However, now I face following issue:
> >>> If I replace my ListView component, with a RefreshingView, I cannot
> check
> >>> any of the checks from the items. I check it, but then it gets
> unchecked
> >>> right away.
> >>> This is because the RefreshingView repaints its model at every
> roundtrip
> >> to
> >>> the server.
> >>>
> >>> I have tried this:
> >>> http://stackoverflow.com/questions/12282492/add-row-to- <
> http://stackoverflow.com/questions/12282492/add-row-to->
> >> refreshingview-without-repainting-entire-refreshingview
> >>> by setting:
> >>> listOfItems.setItemReuseStrategy(new ReuseIfModelsEqualStrategy());
> >>>
> >>> But it did not change a thing for me.
> >>>
> >>> Please guide on how to have a Check for every item of the
> RepeatingView,
> >>> that can be checked.
> >>>
> >>> Thank you.
> >>>
> >>>
> >>>
> >>> On Tue, Oct 18, 2016 at 1:28 PM, ganea iulia <superbiss...@gmail.com
> <mailto:superbiss...@gmail.com>>
> >> wrote:
> >>>
> >>>> Hi,
> >>>> I have 2 forms.
> >>>>
> >>>> Bottom form = testForm
> >>>> - I have a listview with checkboxes.
> >>>> As I needed a checkAll control also, I have uses CheckGroup,
> >>>> CheckGroupSelector and Check wicket components.
> >>>>
> >>>> Top form = testForm0
> >>>> -I have only an link
> >>>>
> >>>> The use case is the following:
> >>>> I check one item (or all) in bottom form, but then I need to get the
> >>>> selected values when click on link in top form.
> >>>>
> >>>> The check doesn't do submit so the values are not retained. I alsways
> >> get
> >>>> the
> >>>> size = 0 message.
> >>>>
> >>>> Could you tell me how I can manage this?
> >>>>
> >>>> Here is the code:
> >>>> =HTML=
> >>>> <form wicket:id="testForm0">
> >>>>  <table class="contenidoform"  cellpadding=1 cellspacing=0 border="0"
> >>>> width="100%">
> >>>> <tr>
> >>>> <th rowspan="3">
> >>>> <a href="#" wicket:id="print"><img src="images/Print.png"
> title="print"
> >>>> /></a>
> >>>> </th>
> >>>> </tr>
> >>>> </table>
> >>>>   </form>
> >>>> <form wicket:id="testForm">
> >>>> <span wicket:id="group">
> >>>> <table class="contenidoform" cellpadding=1 cellspacing=0 border="0"
> >>>> width="100%">
> >>>> <thead>
> >>>> <tr>
> >>>> <th>Name</th>
> >>>> <th>Code</th>
> >>>> </tr>
> >>>> <tr>
> >>>> <th>Id</th>
> >>>> <th rowspan="3"><input type="checkbox" wicket:id="allCheck"
> title="check
> >>>> all/uncheck all" /></th>
> >>>> </tr>
> >>>> </thead>
> >>>> <tbody wicket:id="itemsContainer">
> >>>> <wicket:container wicket:id="forEachItem">
> >>>>  <tr >
> >>>> <td wicket:id="itemName"></td>
> >>>> <td wicket:id="itemCode"></td>
> >>>> </tr>
> >>>> <tr>
> >>>> <td wicket:id="itemId"></td>
> >>>> <td ><input type="checkbox" wicket:id="itemCheck" title="check to
> print"
> >>>> /></td>
> >>>> </tr>
> >>>> </wicket:container>
> >>>>  <tr>
> >>>> <th align="left">&nbsp;</th>
> >>>> <th align="left">
> >>>> <div style="padding-left: 0%;display: inline;" />
> >>>> <a><input type="image" src="images/Save.gif" class="submitButton"
> >>>> name="btnSave" value="OK" /></a>
> >>>> </th>
> >>>>  </tr>
> >>>> </tbody>
> >>>> </table>
> >>>> </span>
> >>>> </form>
> >>>>
> >>>>
> >>>> ==JAVA==
> >>>> private static final long serialVersionUID = 311508940740808005L;
> >>>> private static final Logger logger = LogManager.getLogger(TestPage.
> >> class);
> >>>> private TestForm tst;
> >>>>
> >>>> public TestPage(IModel<TestBean> model) {
> >>>> super(model);
> >>>>
> >>>> TestForm0 tst0 = new TestForm0("testForm0");
> >>>> tst0.setOutputMarkupId(true);
> >>>> add(tst0);
> >>>> tst = new TestForm("testForm", model);
> >>>> tst.setOutputMarkupId(true);
> >>>> add(tst);
> >>>>
> >>>> }
> >>>>
> >>>> class TestForm0 extends Form<TestBean> {
> >>>>
> >>>> /**
> >>>> *
> >>>> */
> >>>> private static final long serialVersionUID = 1L;
> >>>>
> >>>> public TestForm0(String id) {
> >>>> super(id);
> >>>>
> >>>> Link<TestadosSN> print = new Link<TestadosSN>("print") {
> >>>> private static final long serialVersionUID = 15L;
> >>>>
> >>>> @Override
> >>>> public void onClick() {
> >>>> System.out.println("size=" + tst.getCheckedTestBeans().size());
> >>>> }
> >>>> };
> >>>> add(print);
> >>>> }
> >>>> }
> >>>> class TestForm extends Form<TestBean> {
> >>>> /**
> >>>> *
> >>>> */
> >>>> private static final long serialVersionUID = 1L;
> >>>>
> >>>> private List<TestBean> checkedTestBeans;
> >>>> public List<TestBean> getCheckedTestBeans() {
> >>>> return checkedTestBeans;
> >>>> }
> >>>>
> >>>> public void setCheckedTestBeans(List<TestBean> checkedTestBeans) {
> >>>> this.checkedTestBeans = checkedTestBeans;
> >>>> }
> >>>>
> >>>> public TestForm(String id, IModel<TestBean> model) {
> >>>> super(id, model);
> >>>>
> >>>> checkedTestBeans = new ArrayList<TestBean>();
> >>>> 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);
> >>>> }
> >>>>
> >>>> });
> >>>>
> >>>> SubmitLink clearForm = new SubmitLink("clearForm", this){
> >>>>
> >>>> /**
> >>>> *
> >>>> */
> >>>> private static final long serialVersionUID = 1L;
> >>>> @Override
> >>>> public void onSubmit() {
> >>>> model.setObject(new TestBean());
> >>>> TestForm.this.clearInput();
> >>>> };
> >>>> };
> >>>> clearForm.setOutputMarkupId(true);
> >>>> add(clearForm);
> >>>> 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);
> >>>> txtName.setConvertedInput("");
> >>>>
> >>>> }
> >>>>
> >>>> };
> >>>> clearLink.setOutputMarkupId(true);
> >>>> add(clearLink);
> >>>> ///
> >>>> CheckGroup<TestBean> group = new CheckGroup<TestBean>("group",
> >>>> checkedTestBeans);
> >>>> CheckGroupSelector cgs = new CheckGroupSelector("allCheck");
> >>>> group.add(cgs);
> >>>> List<TestBean> beans = Arrays.asList(new TestBean("Name1", "Code1",
> 1),
> >>>> new TestBean("Name2", "Code2", 2));
> >>>> final WebMarkupContainer itemsContainer = new WebMarkupContainer("
> >>>> itemsContainer");
> >>>> itemsContainer.setOutputMarkupId(true);
> >>>> itemsContainer.add(new ListView<TestBean>("forEachItem", beans) {
> >>>> /**
> >>>> *
> >>>> */
> >>>> private static final long serialVersionUID = 1L;
> >>>>
> >>>> @Override
> >>>> protected void populateItem(ListItem<TestBean> item) {
> >>>> item.add(new Label("itemName", new PropertyModel(item.getModel(),
> >>>> "name")));
> >>>> item.add(new Label("itemCode", new PropertyModel(item.getModel(),
> >>>> "code")));
> >>>> item.add(new Label("itemId", new PropertyModel(item.getModel(),
> >> "id")));
> >>>> item.add(new Check<TestBean>("itemCheck", item.getModel(), group));
> >>>> }
> >>>> });
> >>>> group.add(itemsContainer);
> >>>> add(group);
> >>>> //choice
> >>>> List<String> lst = new ArrayList<String>();
> >>>> lst.add("C1");
> >>>> lst.add("C2");
> >>>>
> >>>>
> >>>> ChoiceRenderer<String> renderer = new ChoiceRenderer<String>("code") {
> >>>>
> >>>> private static final long serialVersionUID = 8875819661197521211L;
> >>>>
> >>>> @Override
> >>>> public Object getDisplayValue(String arg0) {
> >>>> return (arg0.equals("C1") ? "Code1" : "Code2");
> >>>> }
> >>>>
> >>>> @Override
> >>>> public String getIdValue(String arg0, int arg1) {
> >>>> return arg0;
> >>>> }
> >>>>
> >>>> @Override
> >>>> public String getObject(String paramString, IModel<? extends List<?
> >>>> extends String>> paramIModel) {
> >>>> // TODO Auto-generated method stub
> >>>> return paramString;
> >>>> }
> >>>>
> >>>> };
> >>>> DropDownChoice<String> code = new DropDownChoice<String>("code", lst,
> >>>> renderer);
> >>>> code.setOutputMarkupId(true);
> >>>> code.setModel(new PropertyModel<String>(getModelObject(), "code"));
> >>>> add(code);
> >>>> }
> >>>>
> >>>> @Override
> >>>> protected void onSubmit() {
> >>>>
> >>>> logger.info("OnSubmit");
> >>>> System.out.println("size=" + checkedTestBeans.size());
> >>>>
> >>>> }
> >>>> }
>
>

Reply via email to