ok! Line 148 is interesting.
----- Ursprüngliche Mail ---- Von: Jeremy Thomerson <jer...@wickettraining.com> An: users@wicket.apache.org Gesendet: Dienstag, den 20. Oktober 2009, 16:50:31 Uhr Betreff: Re: why is the model empty? Well, again, the only way for me to help you more is to supply a quickstart that reproduces this. -- Jeremy Thomerson http://www.wickettraining.com On Tue, Oct 20, 2009 at 9:49 AM, Peter Arnulf Lustig <uuuuu...@yahoo.de>wrote: > I am submitting a textfield in a form to wicket. Just the standard HTTP > Post -- And everywhere it functions well -- I just can't get it why it won't > function there. > > And I don't utilize any JS (Ajax etc.) for that task! It's weird. > > > > ----- Ursprüngliche Mail ---- > Von: Jeremy Thomerson <jer...@wickettraining.com> > An: users@wicket.apache.org > Gesendet: Dienstag, den 20. Oktober 2009, 16:40:45 Uhr > Betreff: Re: why is the model empty? > > Yes - that's what I'm saying. On the webpage, presumably with JS, he is > saying that he is setting the value of the text field. Then when it's > submitted, Wicket should update the model before he gets to onSubmit > > -- > Jeremy Thomerson > http://www.wickettraining.com > > > > On Tue, Oct 20, 2009 at 9:31 AM, Peter Arnulf Lustig <uuuuu...@yahoo.de > >wrote: > > > > > > > "sets the value of the textfield programmatically > > on the page, and submits the form, the model should be updated by the > time > > he gets to this onSubmit method." > > > > How do you mean that? I think wicket sets the model automaticly because > the > > model is attached to the component. > > > > > > > > ----- Ursprüngliche Mail ---- > > Von: Jeremy Thomerson <jer...@wickettraining.com> > > An: users@wicket.apache.org > > Gesendet: Dienstag, den 20. Oktober 2009, 16:28:31 Uhr > > Betreff: Re: why is the model empty? > > > > That's not an immutable model. It's equivalent to new Model<String>("") > - > > which is fine for this use. Assuming the text field and the button are > > within a form, and that he sets the value of the textfield > programmatically > > on the page, and submits the form, the model should be updated by the > time > > he gets to this onSubmit method. > > > > -- > > Jeremy Thomerson > > http://www.wickettraining.com > > > > > > > > On Tue, Oct 20, 2009 at 9:24 AM, Ernesto Reinaldo Barreiro < > > reier...@gmail.com> wrote: > > > > > Sorry but when is the model object update? > > > final TextField<String> tagTitle = new TextField<String>("tagTitle", > > > Model.of("")); > > > > > > just creates and in-mutable model? Or, am I missing something? > > > > > > Best, > > > > > > Ernesto > > > > > > On Tue, Oct 20, 2009 at 3:17 PM, Peter Arnulf Lustig < > uuuuu...@yahoo.de > > > >wrote: > > > > > > > hi, > > > > > > > > in the submit logic the getModel().getObject() is an empty string > > > although > > > > I set it via textfield: > > > > > > > > final Button tagSubmit = new Button("tagSubmit", Model.of("")) { > > > > @Override > > > > public void onSubmit() { > > > > tagTitle.getModel().getObject() // it is empty!! > > > > } > > > > } > > > > > > > > }; > > > > > > > > > > > > that's the textfield: > > > > > > > > final TextField<String> tagTitle = new TextField<String>("tagTitle", > > > > Model.of("")); > > > > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > > > > For additional commands, e-mail: users-h...@wicket.apache.org > > > > > > > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > > For additional commands, e-mail: users-h...@wicket.apache.org > > > > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > >
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package org.omikron.org; import java.util.ArrayList; import java.util.Date; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import org.apache.wicket.AttributeModifier; 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.AjaxButton; import org.apache.wicket.behavior.SimpleAttributeModifier; import org.apache.wicket.feedback.ContainerFeedbackMessageFilter; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.Button; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.IChoiceRenderer; import org.apache.wicket.markup.html.form.ListMultipleChoice; import org.apache.wicket.markup.html.form.TextArea; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.markup.html.link.Link; import org.apache.wicket.markup.html.list.ListItem; import org.apache.wicket.markup.html.list.ListView; import org.apache.wicket.markup.html.panel.FeedbackPanel; import org.apache.wicket.markup.html.panel.Fragment; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.markup.repeater.data.DataView; import org.apache.wicket.model.AbstractReadOnlyModel; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; import org.neodatis.odb.OID; import org.neodatis.odb.core.oid.OIDFactory; import org.omikron.org.model.QuestionDataProvider; import org.omikron.org.model.Worker; import org.omikron.org.pojo.Question; import org.omikron.org.pojo.Tagging; /** * */ public class Fragenkatalog extends Panel { DataView<Question> questionDataView; WebMarkupContainer questionContainer; Fragment questionFragment; // CreateQuestionsForm questionForm; Model<String> systemTagModel; // Tag TextField<String> systemTag; Link systemTagAdd; Form systemTagForm; LinkedHashMap<Integer, String> tagging = new LinkedHashMap<Integer, String>(); ListMultipleChoice<Integer> taggingList; FeedbackPanel addTaggingFeedbackPanel; IModel<List<? extends Integer>> choices; IChoiceRenderer<Integer> renderer; WebMarkupContainer webMarkupContainer; Model<String> webMarkupContainerModel; List<Tagging> tagListe; List selected = new ArrayList(); Model<String> chosenTagModel; Boolean isUpdate = false; Question q; public void updateChosenTags() { chosenTagModel.setObject(""); Iterator<Tagging> itt = selected.iterator(); while (itt.hasNext()) { if (chosenTagModel.getObject().equalsIgnoreCase("")) { chosenTagModel.setObject(itt.next().getTitle()); } else { chosenTagModel.setObject(chosenTagModel.getObject() + ", " + itt.next().getTitle()); } } } public Fragenkatalog(String id) { super(id); final Form form = new Form("createQuestionForm"); // form.setOutputMarkupId(true); form.setVisible(false); add(form); final WebMarkupContainer addFrage = new WebMarkupContainer("addFrage"); // addFrage.setOutputMarkupId(true); final TextArea<String> addFrageFragestellung = new TextArea<String>("fragestellung", Model.of("")); // addFrageFragestellung.setOutputMarkupId(true); final FeedbackPanel feedbackPanelQuestionForm = new FeedbackPanel("feedbackPanelQuestionForm").setFilter(new ContainerFeedbackMessageFilter(addFrage)); // feedbackPanelQuestionForm.setOutputMarkupId(true); final TextField<String> addFrageTitle = new TextField<String>("title", Model.of("")); addFrageTitle.setRequired(true); final Button addFrageSubmit = new Button("addFrageSubmit", Model.of("")) { @Override public void onSubmit() { addFrageTitle.validate(); if (addFrageTitle.isValid() != true) { return; } try { if (!isUpdate) { q = new Question(); } q.setText(addFrageFragestellung.getDefaultModelObjectAsString()); q.setTitle(addFrageTitle.getDefaultModelObjectAsString()); if (!isUpdate) { Worker.SaveQuestion(q); } else { Worker.UpdateQuestion(q); } info("Frage gespeichert"); } catch (Exception e) { error("Jemand hat diesen Datensatz schneller editiert als du und hat somit gewonnen. Lade den Datensatz über die Liste neu!"); } } }; addFrageSubmit.setDefaultFormProcessing(false); // addFrageTitle.setOutputMarkupId(true); form.add(addFrage); addFrage.add(addFrageTitle).add(addFrageFragestellung).add(addFrageSubmit).add(feedbackPanelQuestionForm); final FeedbackPanel feedbackTagSubmit = new FeedbackPanel("feedbackTagSubmit"); feedbackTagSubmit.setOutputMarkupId(true); final WebMarkupContainer tag = new WebMarkupContainer("tag"); tag.setOutputMarkupId(true); final TextField<String> tagTitle = new TextField<String>("tagTitle", Model.of("")); tagTitle.setRequired(true); // tagTitle.setOutputMarkupId(true); feedbackTagSubmit.setFilter(new ContainerFeedbackMessageFilter(tag)); tag.add(feedbackTagSubmit); final Button tagSubmit = new Button("tagSubmit") { @Override public void onSubmit() { System.out.println(tagTitle.getDefaultModelObjectAsString()); } }; tagSubmit.setDefaultFormProcessing(false); tagSubmit.setOutputMarkupId(true); form.add(tag); tag.add(tagTitle); tag.add(tagSubmit); chosenTagModel = new Model(); final Label chosenTag = (Label) new Label("chosenTag", chosenTagModel).setOutputMarkupId(true); tag.add(chosenTag); Iterator<Tagging> it = Worker.LoadTagging(); List tags = new ArrayList(); while (it.hasNext()) { tags.add(it.next()); } tag.add(new ListView("taggingList", tags) { @Override protected void populateItem(ListItem item) { final Tagging tag = (Tagging) item.getModelObject(); item.add(new Label("tagTitle", tag.getTitle())); item.add(new AjaxLink("select") { void auswahl(Tagging item) { if (selected.contains(item)) { } else { selected.add(item); } updateChosenTags(); } @Override public void onClick(AjaxRequestTarget arg0) { auswahl(tag); arg0.addComponent(chosenTag); System.out.println(selected.size()); } }); item.add(new AjaxLink("deselect") { @Override public void onClick(AjaxRequestTarget arg0) { if (selected.contains(tag)) { selected.remove(tag); } updateChosenTags(); arg0.addComponent(chosenTag); } }); item .add(new Link("delete") { @Override public void onClick() { } }.setOutputMarkupId(true).add( new SimpleAttributeModifier("onclick", "return confirm('Bist du sicher? Es werden alle Referenzen entfernt!');"))); } }); // STEP 1 final WebMarkupContainer qContainer = new WebMarkupContainer("fragen_gridview"); questionDataView = new DataView<Question>("fragen_dataview", new QuestionDataProvider()) { @Override protected void populateItem(final Item<Question> item) { Question question = item.getModelObject(); item.add(new Link("editQuestion") { @Override public void onClick() { qContainer.setVisible(false); form.setVisible(true); // systemTagForm.setVisible(true); // setUpdate(); // Ehemals eine update-methode isUpdate = true; q = item.getModelObject(); addFrageTitle.setModel(Model.of(q.getTitle())); addFrageFragestellung.setModel(Model.of(q.getText())); q.setSysTimestamp(new Date()); // --- this.setVisible(false); } }); final Model<String> message = Model.of("Löschen?"); Label deleteQuestionLabel = new Label("deleteQuestionLabel", message); Link deleteQuestion = (Link) new Link("deleteQuestion", message) { @Override public void onClick() { Worker.DeleteQuestion(item.getModelObject().getId()); setResponsePage(Backend.class, new PageParameters("go=fragen")); } }.add(new SimpleAttributeModifier("onclick", "return confirm('Bist du sicher? Es werden alle Referenzen gelöscht!');")); questionFragment = new Fragment("placeDelete", "fragmentDelete", this); questionFragment.add(deleteQuestion.add(deleteQuestionLabel)); item.add(questionFragment); item.add(new Label("titel", question.getTitle())); // -- HIER WIRD DER TEXT GESPLITTET, DAMIT ER NICHT HORIZONTAL WÄCHST -- String fragestellung = question.getText(); try { String[] fst = fragestellung.split(" "); fragestellung = ""; int i = 0; for (String s : fst) { i++; fragestellung = fragestellung + " " + s; if (i % 20 == 0) { fragestellung = fragestellung + "<br/>"; } } } catch (Exception e) {} // -- item.add(new Label("fragestellung", fragestellung).setEscapeModelStrings(false)); item.add(new AttributeModifier("class", true, new AbstractReadOnlyModel<String>() { @Override public String getObject() { return (item.getIndex() % 2 == 1) ? "even" : "odd"; } })); } }; qContainer.setOutputMarkupId(true); qContainer.add(questionDataView); add(qContainer); final Link createQuestion = new Link("createQuestion") { @Override public void onClick() { qContainer.setVisible(false); form.setVisible(true); this.setVisible(false); } }; add(createQuestion); } public void createTaggingBereich(OID fragenID) { webMarkupContainer = new WebMarkupContainer("taggingBereich"); webMarkupContainer.setOutputMarkupId(true); addTaggingFeedbackPanel = new FeedbackPanel("addTaggingFeedbackPanel"); addTaggingFeedbackPanel.setFilter(new ContainerFeedbackMessageFilter(webMarkupContainer)); addTaggingFeedbackPanel.setOutputMarkupId(true); final Model<String> taggingTitleModel = Model.of(""); Form addTagging = new Form("addTagging"); TextField<String> taggingTitle = new TextField<String>("taggingTitle", taggingTitleModel); Iterator<Tagging> taggingiterator = Worker.LoadTagging(); while (taggingiterator.hasNext()) { Tagging erg = taggingiterator.next(); Integer value = Integer.valueOf(erg.getId().toString()); tagging.put(value, erg.getTitle()); } choices = Model.of((List<Integer>) new ArrayList<Integer>(tagging.keySet())); renderer = new IChoiceRenderer<Integer>() { public Object getDisplayValue(Integer arg0) { return tagging.get(arg0); } public String getIdValue(Integer arg0, int arg1) { return arg0.toString(); } }; taggingList = new ListMultipleChoice<Integer>("taggingList", new Model(), choices, renderer).setMaxRows(10); taggingList.setOutputMarkupId(true); // Worker.DeleteTagging(OdbClassOID.oidFromString(String.valueOf("356"))); AjaxButton deleteTag = new AjaxButton("deleteTag", addTagging) { @Override protected void onSubmit(AjaxRequestTarget arg0, Form<?> arg1) { Iterator it = taggingList.getModelObject().iterator(); while (it.hasNext()) { Object itt = it.next(); Worker.DeleteTagging(OIDFactory.buildObjectOID(Long.valueOf(itt.toString()))); tagging.remove(Integer.valueOf(itt.toString())); choices.setObject(new ArrayList<Integer>(tagging.keySet())); } info("Auswahl gelöscht"); arg0.addComponent(webMarkupContainer); } }; addTagging.add(deleteTag); AjaxButton taggingBereichSubmit = new AjaxButton("taggingBereichSubmit", addTagging) { @Override protected void onSubmit(AjaxRequestTarget arg0, Form<?> arg1) { if (Worker.CountTagging(taggingTitleModel.getObject()) > 0) { error("Leider ist der Tag-Titel bereits im System!"); } else if (taggingTitleModel.getObject() == null) { error("Bitte was eingeben"); } else { Tagging t = new Tagging(); t.setTitle(taggingTitleModel.getObject()); Worker.SaveTagging(t); tagging.put(Integer.valueOf(t.getId().toString()), t.getTitle()); info("Tag mit dem Titel " + t.getTitle() + " angelegt!"); } choices.setObject(new ArrayList<Integer>(tagging.keySet())); arg0.addComponent(webMarkupContainer); } }; AjaxButton taggingBereichLokaleRepo = new AjaxButton("taggingBereichLokaleRepo", addTagging) { @Override protected void onSubmit(AjaxRequestTarget arg0, Form<?> arg1) { } }; webMarkupContainer.setVisible(false); addTagging.add(taggingBereichLokaleRepo); addTagging.add(taggingBereichSubmit); add(webMarkupContainer.add(addTagging.add(taggingList).add(addTaggingFeedbackPanel).add(taggingTitle))); System.out.println(new Date()); } } // WORKER CLASS package org.omikron.org.model; import java.security.NoSuchAlgorithmException; import java.util.Date; import java.util.Iterator; import java.util.Random; import org.neodatis.odb.ODB; import org.neodatis.odb.ODBFactory; import org.neodatis.odb.OID; import org.neodatis.odb.Objects; import org.neodatis.odb.core.query.IQuery; import org.neodatis.odb.core.query.criteria.Where; import org.neodatis.odb.impl.core.query.criteria.CriteriaQuery; import org.omikron.org.pojo.Administrator; import org.omikron.org.pojo.Question; import org.omikron.org.pojo.Systemsetting; import org.omikron.org.pojo.Tagging; public class Worker { public static ODB initDB() { return ODBFactory.openClient("localhost", 10028, "odb", "", ""); } public static void commitDB(ODB odb) { // String[] fieldNames = {"email"}; // odb.getClassRepresentation(Administrator.class).addUniqueIndexOn("email-uniq", fieldNames, true); odb.commit(); } public static Boolean optimisticLocking(Date preUpdate, Date update) { Boolean b = false; if (preUpdate.after(update)) { b = true; } return b; } public static Administrator LoadAdministratorByUsername(String username) { Administrator administrator = null; // Logic ODB odb = initDB(); try { IQuery query = new CriteriaQuery(Administrator.class, Where.equal("username", username)); administrator = (Administrator) odb.getObjects(query).getFirst(); } catch (Exception e) { e.printStackTrace(); } finally { commitDB(odb); } return administrator; } public static Integer CountAdministratorByUsername(String username) { Integer count = 0; // Logic ODB odb = initDB(); try { IQuery query = new CriteriaQuery(Administrator.class, Where.equal("username", username)); count = odb.getObjects(query).size(); } catch (Exception e) { e.printStackTrace(); } finally { commitDB(odb); } return count; } public static Administrator LoadAdministratorByMail(String mail) { Administrator administrator = null; // Logic ODB odb = initDB(); try { IQuery query = new CriteriaQuery(Administrator.class, Where.equal("email", mail)); administrator = (Administrator) odb.getObjects(query).getFirst(); } catch (Exception e) { e.printStackTrace(); } finally { commitDB(odb); } return administrator; } public static String RegenerateAdministratorPassword(OID oid) throws NoSuchAlgorithmException { String password = null; // Logic ODB odb = initDB(); Administrator administrator; administrator = (Administrator) odb.getObjectFromId(oid); String str = "kl#ya#j#-SD#S2__08jaSKL#nAs_d12yaa#s#vm--h-l-gopcbyaASDFGBNMCA:-"; StringBuffer sb = new StringBuffer(); Random r = new Random(); int te = 0; for (int i = 1; i <= 8; i++) { te = r.nextInt(str.length()); // Spiegelt die Länge von str wieder. sb.append(str.charAt(te)); } password = sb.toString(); administrator.setPassword(password); odb.store(administrator); commitDB(odb); return password; } public static Administrator GetAdministratorByOID(OID oid) { Administrator administrator = null; // Logic ODB odb = initDB(); administrator = (Administrator) odb.getObjectFromId(oid); commitDB(odb); return administrator; } public static Iterator<Administrator> LoadAdministratorWithLimits(int first, int max) { ODB odb = initDB(); IQuery query = new CriteriaQuery(Administrator.class); Objects<Administrator> administrators = odb.getObjects(query, true, first, max); commitDB(odb); return administrators.iterator(); } public static int CountAdministrators() { ODB odb = initDB(); IQuery query = new CriteriaQuery(Administrator.class); int integer = 0; integer = odb.count((CriteriaQuery) query).intValue(); return integer; } public static void SaveAdministrator(Administrator a) { ODB odb = initDB(); OID oid = odb.store(a); commitDB(odb); a.setId(oid); a.setSysTimestamp(new Date()); odb.store(a); commitDB(odb); } public static void DeleteAdministator(OID oid) { ODB odb = initDB(); if (odb.count(new CriteriaQuery(Administrator.class)).intValue() > 1) { odb.deleteObjectWithId(oid); } odb.commit(); } public static void UpdateAdministrator(Administrator a) throws NoSuchAlgorithmException, OptimisticLockingException { ODB odb = initDB(); Administrator administrator = (Administrator) odb.getObjectFromId(a.getId()); if (optimisticLocking(administrator.getSysTimestamp(), a.getSysTimestamp()) == true) { throw new OptimisticLockingException(); } administrator.setEmail(a.getEmail()); administrator.setFirstname(a.getFirstname()); administrator.setLastname(a.getLastname()); administrator.setPassword(a.getPassword(), true); administrator.setQuestionsetCollection(a.getQuestionsetCollection()); administrator.setSysTimestamp(new Date()); administrator.setUsername(a.getUsername()); odb.store(administrator); commitDB(odb); } public static Systemsetting GetLatestSystemsetting() { Systemsetting systemsetting = null; ODB odb = initDB(); try { IQuery query = new CriteriaQuery(Systemsetting.class).orderByDesc("id"); systemsetting = (Systemsetting) odb.getObjects(query).getFirst(); } catch (Exception e) { e.printStackTrace(); } finally { commitDB(odb); } return systemsetting; } public static void SaveSystemsetting(Systemsetting s) { ODB odb = initDB(); OID oid = odb.store(s); commitDB(odb); s.setId(oid); odb.store(s); commitDB(odb); } public static Iterator<Question> LoadQuestionWithLimits(int first, int max) { ODB odb = initDB(); IQuery query = new CriteriaQuery(Question.class); Objects<Question> questions = odb.getObjects(query, true, first, max); commitDB(odb); return questions.iterator(); } public static int CountQuestions() { ODB odb = initDB(); IQuery query = new CriteriaQuery(Question.class); int integer = 0; integer = odb.count((CriteriaQuery) query).intValue(); return integer; } public static Question GetQuestionByOID(OID oid) { Question question = null; // Logic ODB odb = initDB(); question = (Question) odb.getObjectFromId(oid); commitDB(odb); return question; } public static void SaveQuestion(Question q) { ODB odb = initDB(); OID oid = odb.store(q); commitDB(odb); q.setId(oid); q.setSysTimestamp(new Date()); odb.store(q); commitDB(odb); } public static void UpdateQuestion(Question q) throws OptimisticLockingException { ODB odb = initDB(); Question question = (Question) odb.getObjectFromId(q.getId()); if (optimisticLocking(question.getSysTimestamp(), q.getSysTimestamp()) == true) { throw new OptimisticLockingException(); } question.setText(q.getText()); question.setTitle(q.getTitle()); question.setTestentityCollection(q.getTestentityCollection()); question.setTagQuestionAssn(q.getTagQuestionAssn()); question.setSysTimestamp(new Date()); odb.store(question); commitDB(odb); } public static void DeleteQuestion(OID id) { ODB odb = initDB(); // if (odb.count(new CriteriaQuery(Question.class)).intValue() > 1) { odb.deleteObjectWithId(id); // } odb.commit(); } public static void SaveTagging(Tagging t) { ODB odb = initDB(); OID oid = odb.store(t); commitDB(odb); t.setId(oid); odb.store(t); commitDB(odb); } public static Iterator<Tagging> LoadTagging() { ODB odb = initDB(); IQuery query = new CriteriaQuery(Tagging.class); Objects<Tagging> tagging = odb.getObjects(query); commitDB(odb); return tagging.iterator(); } public static Integer CountTagging(String title) { Integer i = null; ODB odb = initDB(); try { IQuery query = new CriteriaQuery(Tagging.class, Where.equal("title", title)); i = odb.getObjects(query).size(); } catch (Exception e) { e.printStackTrace(); } finally { commitDB(odb); } return i; } public static void DeleteTagging(OID id) { ODB odb = initDB(); // if (odb.count(new CriteriaQuery(Question.class)).intValue() > 1) { odb.deleteObjectWithId(id); // } odb.commit(); } }
--------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org