Want to refresh page and show curently added entry to database. But does not
work. To trap down the reason I've created two applications which are very
similiar. Both show a java.util.List - on is filled from a database the
other one immediately from the program (List<String[]>.add()). The second
one is fine, the first one is in no way dynamic; even Browser refresh does
not display the new entry; I have to call the whole URL again.

What is wrong with my assumptions. Any hint is appreciated.

brgds
Ulrich

*Database-Sample:*
package com.mycompany;

import java.io.IOException;
import java.util.Date;
import java.util.List;

import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import de.gombers.accounts.dao.mybatis.ListData;
import de.gombers.accounts.dao.mybatis.ListDataDAO;


public class HomePage extends WebPage {
        private static final Logger LOGGER =
LoggerFactory.getLogger(HomePage.class);
        private static final long serialVersionUID = 1L;
        private List<ListData> dataList;

        public HomePage(final PageParameters parameters) {
                super(parameters);

                Form form = new Form("form");

                PropertyModel pm = new PropertyModel(this, "dataList");
                List<ListData> werte = (List<ListData>) pm.getObject();
                


                final ListView listView =  new ListView("listentries", werte ) {
                        @Override
                        protected void populateItem(ListItem item) {
                                final ListData data=  (ListData) 
item.getModelObject();
                                item.add(new Label("mydate", new Model() {
                                        @Override
                                        public String getObject() {
                                                return 
data.getMyDate().toString();
                                        }
                                }));
                                item.add(new Label("mytext", new Model(""){
                                        @Override
                                        public String getObject() {
                                                return data.getMyText();
                                        }
                                }));

                        }
                };
                listView.setOutputMarkupId(true);
                form.add(listView);


                AjaxButton submit = new AjaxButton("addEntry"){
                        @Override
                        protected  void         onSubmit(AjaxRequestTarget 
target, Form<?> form) {
                                ListData data = new ListData();
                                data.setMyData(new Date());
                                data.setMyText("myText");;
                                try {
                                        new ListDataDAO().insertNewEntry(data);
                                } catch (IOException e) {
                                        // TODO Auto-generated catch block
                                        //                                      
        e.printStackTrace();
                                }
                                try {
                                        dataList=new ListDataDAO().getAllData();
                                } catch (IOException e) {
                                        LOGGER.error("", e);
                                }
                                
                                target.add(form);
                        }
                };

                form.add(submit);
                add(form);
        }

        public List<ListData> getDataList() {
                try {
                        dataList=new ListDataDAO().getAllData();
                        LOGGER.info("ListDataSize2={}", dataList.size());
                } catch (IOException e) {
                        LOGGER.error("", e);
                }
                return dataList;
        }
}

*ListArray-Sample:*
package com.mycompany;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;



public class HomePage2 extends WebPage {
        private static final Logger LOGGER =
LoggerFactory.getLogger(HomePage.class);
        private static final long serialVersionUID = 1L;
        private List<String[]> dataList = new ArrayList() ;

        public HomePage2(final PageParameters parameters) {
                super(parameters);

                Form form = new Form("form");
                dataList.add(new String[]{new Date().toString(), "Line no 1 "});

                PropertyModel pm = new PropertyModel(this, "dataList");
                List<String[]> werte = (List<String[]>) pm.getObject();


                final ListView listView =  new ListView("listentries", werte ) {
                        @Override
                        protected void populateItem(ListItem item) {
                                final String[] data=  (String[]) 
item.getModelObject();
                                item.add(new Label("mydate", new Model() {
                                        @Override
                                        public String getObject() {
                                                return data[0];
                                        }
                                }));
                                item.add(new Label("mytext", new Model(""){
                                        @Override
                                        public String getObject() {
                                                return data[1];
                                        }
                                }));

                        }
                };
                listView.setOutputMarkupId(true);
                form.add(listView);


                AjaxButton submit = new AjaxButton("addEntry"){
                        @Override
                        protected  void         onSubmit(AjaxRequestTarget 
target, Form<?> form) {
                                LOGGER.info("Submit Button pressed");
                                
                                String[] data = new String[2];
                                data[0]=new Date().toString();
                                data[1]=String.format("Line no %s", 
dataList.size());
                                dataList.add(data);
                                
                                target.add(form);
                        }
                };

                form.add(submit);
                add(form);
        }

        public List<String[]> getDataList() {
                return dataList;
        }
}


 

--
View this message in context: 
http://apache-wicket.1842946.n4.nabble.com/Webpage-does-not-refresh-when-ListView-is-based-on-a-List-supplied-by-a-database-tp4671251.html
Sent from the Users forum mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to