excuse me by all this handycopying i lost the part you mentioned if you would 
have looked at the example i send you you would have seen that the instruction 
is :

tester.executeBehavior ((AbstractAjaxBehavior) 
tester.getComponentFromLastRenderedPage("form:land").getBehaviors().get(0));
Von meinem Samsung Galaxy Smartphone gesendet.
-------- Ursprüngliche Nachricht --------Von: Martin Grigorov 
<mgrigo...@apache.org> Datum: 25.05.16  10:33  (GMT+01:00) An: 
hansheinrichbraun <hansheinrichbr...@yahoo.de> Cc: users@wicket.apache.org 
Betreff: Re: Re: Re: FormTester and IModel 
On Wed, May 25, 2016 at 10:20 AM, hansheinrichbraun <
hansheinrichbr...@yahoo.de> wrote:

>
> I thought i did the trigger here :
>
>
>
> tester.getComponentFromLastRenderedPage("form:land").getBehaviors().get(0));
>

This is just an execution of a getter.
You need to tester.executeBehavior(ajaxBehavior) it


>
>
>
>
> Von meinem Samsung Galaxy Smartphone gesendet.
>
> -------- Ursprüngliche Nachricht --------
> Von: Martin Grigorov <mgrigo...@apache.org>
> Datum: 25.05.16 09:25 (GMT+01:00)
> An: hansheinrichbraun <hansheinrichbr...@yahoo.de>
> Cc: users@wicket.apache.org
> Betreff: Re: Re: FormTester and IModel
>
> Hi,
>
>
> On Wed, May 25, 2016 at 7:42 AM, hansheinrichbraun <
> hansheinrichbr...@yahoo.de> wrote:
>
>> Excuse me i didn't communicate here for a long time so i am a little
>> unfamiliar how to describe my problem here.
>>
>> so i try to describe it here and send you once more the reduced
>> application
>>
>> there is a field i defined with my own EntityModel class
>>
>> IModel<Land> selectedLand=new EntityModel<Land>(Land.class,null);
>>
>> it is set by a DropDownChoice
>>
>> final DropDownChoice<Land> land
>> > = new DropDownChoice<Land>("land",new
>> > PropertyModel<Land>(this,"selectedLand.entity"),
>>
>> the selection of this field sets the Choices of another DropDownChoice
>>  by
>>
>> land.add(new AjaxFormComponentUpdatingBehavior("onchange") { @Override
>>
>
> Here you use Ajax behavior to submit the form component.
>
>
>> protected void onUpdate(AjaxRequestTarget target) {
>> orte.setVisible(true);
>> target.add(orte); }  });
>>
>> if i select land but don't select orte
>>
>> and then click at the nextButton
>>
>> when i run with jetty land is still set.
>>
>> when i simulate this behaviour by WicketTester and FormTester
>>
>>
>> formTester.select("land", 0);
>>
>
> Here you don't trigger trigger the Ajax behavior to update the model
> object of this form component, so its value is still the old.
>
>
>>
>> .getComponentFromLastRenderedPagtestere("form:land").getBehaviors().get(0));
>> tester.assertVisible("form:orte");
>> formTester.submit("nextButton");
>>
>> i found out in nextButton that land is null.
>>
>> Maybe it's my version of EntityModel
>>
>> i send you once more the whole application.
>> Von meinem Samsung Galaxy Smartphone gesendet.
>>
>> -------- Ursprüngliche Nachricht --------
>> Von: Martin Grigorov <mgrigo...@apache.org>
>> Datum: 19.05.16 10:19 (GMT+01:00)
>> An: users@wicket.apache.org, Hans-Heinrich Braun <
>> hansheinrichbr...@yahoo.de>
>> Betreff: Re: FormTester and IModel
>>
>> Sorry, but your email is hardly readable.
>> You may use some pastebin service for the code.
>>
>> Martin Grigorov
>> Wicket Training and Consulting
>> https://twitter.com/mtgrigorov
>>
>> On Thu, May 19, 2016 at 10:13 AM, Hans-Heinrich Braun <
>> hansheinrichbr...@yahoo.de.invalid> wrote:
>>
>> > I tested a little bit but the reason is not so obviousthere is a series
>> of
>> > DropDowbFields where each sets the choices for the next protected
>> > IModel<Land> selectedLand=new EntityModel<Land>(Land.class,null);
>> protected
>> > IModel<Orte> selectedOrt=new EntityModel<Orte>(Orte.class,null);;
>> protected
>> > IModel<Strassen> selectedStrasse=new
>> > EntityModel<Strassen>(Strassen.class,null); protected IModel<Objekte>
>> > selectedObjekt=new EntityModel<Objekte>(Objekte.class,null);
>> IModel<List<?
>> > extends Land>>makeChoicesLand= new AbstractReadOnlyModel<List<? extends
>> > Land>>() { @Override public List<Land> getObject() { List<Land>
>> > landlist=new ArrayList<Land>(); if(landManager!=null){ Iterator
>> > landiterator=landManager.getLandes().iterator();
>> > while(landiterator.hasNext()){ Land land=(Land) landiterator.next();
>> > landlist.add(land); } } return landlist; } };  private IModel<List<?
>> > extends Orte>> makeChoicesOrt = new AbstractReadOnlyModel<List<? extends
>> > Orte>>() { @Override public List<Orte> getObject() { List<Orte>
>> > ortelist=new ArrayList<Orte>(); try{ if
>> (selectedLand.getObject()!=null){
>> > Iterator orteiterator=selectedLand.getObject().getOrte().iterator();
>> > while(orteiterator.hasNext()){ Orte orte=(Orte)orteiterator.next();
>> > Iterator strasseniterator=orte.getStrassen().iterator();
>> > while(strasseniterator.hasNext()){ Strassen
>> > strassen=(Strassen)strasseniterator.next();  Iterator
>> > objekteiterator=strassen.getObjekte().iterator();
>> > while(objekteiterator.hasNext()){ Objekte
>> > objekte=(Objekte)objekteiterator.next(); } }
>> > if(Strings.isEmpty(selectedOrtstring)){ortelist.add(orte);}  else{
>> > if(orte.getOrtname().startsWith(selectedOrtstring, 0))
>> ortelist.add(orte);
>> > } } }  }catch(Exception e){System.err.println(e);} return ortelist; }
>> };
>> >
>> >
>> >  private IModel<List<? extends Strassen>> makeChoicesStrassen = new
>> > AbstractReadOnlyModel<List<? extends Strassen>>() { @Override public
>> > List<Strassen> getObject() { List<Strassen> strassenlist=new
>> > ArrayList<Strassen>(); if (selectedOrt.getObject()!=null){   Iterator
>> > strasseniterator=selectedOrt.getObject().getStrassen().iterator();
>> > while(strasseniterator.hasNext()){ Strassen
>> > strassen=(Strassen)strasseniterator.next();
>> > if(Strings.isEmpty(selectedStrassenstring)){strassenlist.add(strassen);}
>> > else{ if(strassen.getStrname().startsWith(selectedStrassenstring, 0))
>> > strassenlist.add(strassen); } }  }  return strassenlist; } };
>> >
>> >
>> >
>> >
>> >  private IModel<List<? extends Objekte>> makeChoicesObjekte = new
>> > AbstractReadOnlyModel<List<? extends Objekte>>() { @Override public
>> > List<Objekte> getObject() { List<Objekte> objektelist=new
>> > ArrayList<Objekte>(); if(selectedStrasse.getObject()!=null){  Iterator
>> > objekteiterator=selectedStrasse.getObject().getObjekte().iterator();
>> > while(objekteiterator.hasNext()){ Objekte
>> > objekte=(Objekte)objekteiterator.next(); objektelist.add(objekte);  } }
>> > return objektelist; } };  final DropDownChoice<Objekte> objekte = new
>> > DropDownChoice<Objekte>("objekte",new
>> > PropertyModel<Objekte>(this,"selectedObjekt.entity"),
>> > makeChoicesObjekte,objektechoicerenderer); final DropDownChoice<Land>
>> land
>> > = new DropDownChoice<Land>("land",new
>> > PropertyModel<Land>(this,"selectedLand.entity"), makeChoicesLand,new
>> > ChoiceRenderer<Land>("landname","id")); final DropDownChoice<Orte> orte
>> =
>> > new DropDownChoice<Orte>("orte",new
>> > PropertyModel<Orte>(this,"selectedOrt.entity"), makeChoicesOrt,new
>> > ChoiceRenderer<Orte>("ortname","id")); final DropDownChoice<Strassen>
>> > strassen = new DropDownChoice<Strassen>("strassen",new
>> > PropertyModel<Strassen>(this,"selectedStrasse.entity"),
>> > makeChoicesStrassen,new ChoiceRenderer<Strassen>("strname","id")); First
>> > only land is visible if selected orte becomes visible if this is
>> selected
>> > the next dropdown becomes visible etc.
>> > This is triggered by
>> > land.add(new AjaxFormComponentUpdatingBehavior("onchange") { @Override
>> > protected void onUpdate(AjaxRequestTarget target) {
>> > ortemarkup.setVisible(true); target.add(ortemarkup);
>> > textsearchmarkup.setVisible(false); target.add(textsearchmarkup); }  });
>> >  orte.add(new AjaxFormComponentUpdatingBehavior("onchange") { @Override
>> > protected void onUpdate(AjaxRequestTarget target) {
>> > strassenmarkup.setVisible(true); target.add(strassenmarkup); } });
>> >
>> >
>> > strassen.add(new AjaxFormComponentUpdatingBehavior("onchange") {
>> @Override
>> > protected void onUpdate(AjaxRequestTarget target) {
>> if(withNext==false){
>> > customCSS = "btn btn-info pull-left col-sm-4 disabled"; customEnabled =
>> > false;} if(whithObjekt==1) {  objektemarkup.setVisible(true);
>> > personenmarkup.setVisible(false); } if(whithObjekt==2){
>> > objektemarkup.setVisible(true); personenmarkup.setVisible(true); }
>> > if(whithObjekt==0){ objektemarkup.setVisible(false);
>> > personenmarkup.setVisible(false); } if(whithObjekt==-1) {
>> > personenmarkup.setVisible(true); objektemarkup.setVisible(false);}
>> > target.add(objektemarkup); target.add(personenmarkup);
>> target.add(onNext);
>> > } });the dropdowns are in Markupcontainers which might be visible or
>> not.In
>> > each position you can hit a nextButton.which looks which selectedFields
>> are
>> > not empty and decides which action to take.
>> > this works in real life and with WicketTester i make the following:
>> >
>> tester.executeUrl("../../wicket/bookmarkable/braunimmobilien.bootstrap.webapp.pages.breadcrumb.IndexBootstrap?objid=null");
>> > tester.assertRenderedPage(IndexBootstrap.class); FormTester formTester =
>> > tester.newFormTester("panel:form");
>> >
>> Assert.assertEquals("",formTester.getForm().getClass().getSimpleName(),"StrassenSucheForm");
>> > tester.assertInvisible("panel:form:ortemarkup:orte");
>> >
>> tester.assertInvisible("panel:form:eigentuemertypmarkup:eigentuemertyp");
>> > tester.assertVisible("panel:form:landmarkup:land");
>> > formTester.select("landmarkup:land", 0);
>> >
>> tester.executeBehavior((AbstractAjaxBehavior)tester.getComponentFromLastRenderedPage("panel:form:landmarkup:land").getBehaviors().get(0));
>> > tester.assertVisible("panel:form:ortemarkup:orte");
>> > tester.assertInvisible("panel:form:strassenmarkup:strassen");
>> > formTester.select("ortemarkup:orte", 0);
>> >
>> tester.executeBehavior((AbstractAjaxBehavior)tester.getComponentFromLastRenderedPage("panel:form:ortemarkup:orte").getBehaviors().get(0));
>> > tester.assertVisible("panel:form:strassenmarkup:strassen");
>> > tester.assertInvisible("panel:form:objektemarkup:objekte");
>> > formTester.select("strassenmarkup:strassen", 0);
>> >
>> tester.executeBehavior((AbstractAjaxBehavior)tester.getComponentFromLastRenderedPage("panel:form:strassenmarkup:strassen").getBehaviors().get(0));
>> > tester.assertVisible("panel:form:objektemarkup:objekte");
>> > formTester.submit("nextButton");
>> > tester.assertRenderedPage(IndexBootstrap.class); formTester =
>> > tester.newFormTester("panel:form");
>> >
>> Assert.assertEquals("",formTester.getForm().getClass().getSimpleName(),"ObjektInput");
>> > and found out that if i use
>> >
>> tester.executeBehavior((AbstractAjaxBehavior)tester.getComponentFromLastRenderedPage("panel:form:strassenmarkup:strassen").getBehaviors().get(0));
>> > selectedStrasse is null so that the nextButton behaviour is not the
>> same as
>> > in real life.
>> > If i avoid the above i must also avoid
>> > tester.assertVisible("panel:form:objektemarkup:objekte");but the
>> nextButton
>> > behaviour is then the same as in real life.This different behaviour is
>> with
>> > all fields.When i select a dropdown and then immediately hit nextButton
>> > there is no difference in behaviout.so the difference in the behaviour
>> of
>> > the IModel selectedFields comes by tester.executeBehavior where all set
>> > IModel fields are set at null
>>
>
>

Reply via email to