You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Michael Petritsch <mi...@gmail.com> on 2011/07/17 15:23:09 UTC

Loading wicket components from javascript

Hi,

is there a way to load wicket components from javascript? I tried the
https://cwiki.apache.org/WICKET/calling-wicket-from-javascript.html
approach. I tried to add a Label but it wasn't visible on the page. I
tried to add a Panel but it never replaced the markupPlaceHolder I
added for it. All I can do is send some js back via
target.appendJavascript. Am I using it wrong or is there another way
to do this?

regards,
Michael

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


Re: Loading wicket components from javascript

Posted by Martin Grigorov <mg...@apache.org>.
On Sun, Jul 24, 2011 at 6:18 PM, Michael Petritsch
<mi...@gmail.com> wrote:
> I am using this behaviour because I found an example for this. I don't
> know if there is anything better. :)
>
> Ok, the problem is I have some javascript diagrams (from
> http://highcharts.com/, don't want to advertise, but since you've
> asked ;)) that I use in our wicket app.
see https://github.com/hielkehoeve/wiquery-highcharts . could be in help ...
>
> and when I click on a part of the diagramm I want to open a wicket
for events like click you better use AjaxEventBehavior
> panel that loads data for that specific part of the diagramm.
>
> so I got everything working except the panel replacement. I also tried
> the MyPanel.this.addOrReplacecomponent(myAjaxLoadedPanel) before with
> no effect, but maybe I've screwed something else up then. Gonna try it
> again, thanks.
>
>
> On Sun, Jul 24, 2011 at 5:06 PM, Martin Grigorov <mg...@apache.org> wrote:
>> On Sun, Jul 24, 2011 at 5:40 PM, Michael Petritsch
>> <mi...@gmail.com> wrote:
>>> Yes, I removed the visibility related code and anything else for
>>> simplicity and to focus on the actual problem.
>>>
>>> What I actually want to achieve is something like:
>>>
>>> public class MyPanel extends Panel {
>>>  Panel myAjaxLoadedPanel;
>>>  public MyPanel() {
>>>   add(new AbstractDefaultAjaxBehavior() {
>> Still not clear why you use directly this behavior but you know better :-)
>>>           @Override
>>>           protected void respond(AjaxRequestTarget target) {
>>>             String someParameter =
>>> RequestCycle.get().getRequest().getParameter("someParameter");
>>>             if(someParameter.equals("1") {
>> reverse the check here to avoid NPE
>>>                myAjaxLoadedPanel = new Foo1Panel("myAjaxLoadedPanel");
>>>             }
>>>             ...
>>>             else {
>>>                myAjaxLoadedPanel = new FooXPanel("myAjaxLoadedPanel");
>>>             }
>>>             target.addComponent(myAjaxLoadedPanel);
>>>           }
>>>   }
>>>   myAjaxLoadedPanel = new MyDefaultPanel("myAjaxLoadedPanel");
>>>   myAjaxLoadedPanel.setOutputMarkupId(true);
>>>   add(myAjaxLoadedPanel);
>>> }
>> The problem that I see is that you just re-assign the panel. Better
>> see org.apache.wicket.Component.replaceWith(Component) and
>> org.apache.wicket.MarkupContainer.replace(Component). These methods
>> preserve the component hierarchy, i.e. the new assignment will
>> inherits its parent (MyPanel.this) from the old assignment.
>>
>> What is the actual problem ? Sorry, but I didn't follow this thread before.
>>
>>>
>>> On Sun, Jul 24, 2011 at 4:16 PM, Martin Grigorov <mg...@apache.org> wrote:
>>>> On Sun, Jul 24, 2011 at 5:10 PM, Michael Petritsch
>>>> <mi...@gmail.com> wrote:
>>>>> I am using wicket 1.4.16, the markupplaceholder is there (checked with firebug).
>>>>>
>>>>> I have also tried it with a simple visible label:
>>>>>
>>>>> public class MyPanel extends Panel {
>>>>>  Label myUpdatedLabel;
>>>>>  public MyPanel() {
>>>>>    add(new AbstractDefaultAjaxBehavior() {
>>>> Why do you use this behavior but not a more specific one ? E.g.
>>>> AjaxEventBehavior.
>>>>>            @Override
>>>>>            protected void respond(AjaxRequestTarget target) {
>>>>>              myUpdatedLabel.setDefaultModel("bar");
>>>>>              target.addComponent(myUpdatedLabel);
>>>>>            }
>>>>>    }
>>>>>    myUpdatedLabel = new Label("myLabel","foo");
>>>>>    myUpdatedLabel.setOutputMarkupId(true);
>>>>>    add(myUpdatedLabel);
>>>>> }
>>>>>
>>>>> This works, however what I actually have to do in the response()
>>>>> method is the following:
>>>>> myUpdatedLabel = new Label("myLabel","bar");
>>>>> myUpdatedLabel.setOuputMarkupId(true);
>>>>> target.addComponent(myUpdatedLabel);
>>>> What you really want is:
>>>> myUpdatedLabel.setDefaultModelObject("bar");
>>>> target.addComponent(myUpdatedLabel);
>>>>>
>>>>> But when I try this nothing happens. The html of the label remains
>>>>> untouched: <div id="myLabeld" wicket:id="myLabel">foo</div>
>>>> setOutputMarkupPlaceholderTag(true) is needed only if you change the
>>>> visibility of Ajax updated component. I don't see visibility related
>>>> logic in your code.
>>>>
>>>> What exactly you want to achieve ?
>>>>>
>>>>> On Mon, Jul 18, 2011 at 4:59 AM, msj121 <ms...@gmail.com> wrote:
>>>>>> I am not sure if it is still true, but if you have the label added, just the
>>>>>> visibility is false from the beginning, then in older versions of wicket it
>>>>>> would not actually put the component, even the placeholder. I dealt with
>>>>>> this before, but I think in newer versions presumably this was changed....
>>>>>> In theory a good way to check if this is an issue is to setvisible to true
>>>>>> in the beginning and alternate.
>>>>>>
>>>>>>
>>>>>> If your trying to add a new markup that never existed in html to the page,
>>>>>> it should throw an error, and then you will need to use ListViews etc... as
>>>>>> described above.
>>>>>>
>>>>>> --
>>>>>> View this message in context: http://apache-wicket.1842946.n4.nabble.com/Loading-wicket-components-from-javascript-tp3673381p3674372.html
>>>>>> Sent from the Users forum mailing list archive at Nabble.com.
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>>>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>>>>
>>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Martin Grigorov
>>>> jWeekend
>>>> Training, Consulting, Development
>>>> http://jWeekend.com
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>
>>>
>>
>>
>>
>> --
>> Martin Grigorov
>> jWeekend
>> Training, Consulting, Development
>> http://jWeekend.com
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>



-- 
Martin Grigorov
jWeekend
Training, Consulting, Development
http://jWeekend.com

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


Re: Loading wicket components from javascript

Posted by Michael Petritsch <mi...@gmail.com>.
I am using this behaviour because I found an example for this. I don't
know if there is anything better. :)

Ok, the problem is I have some javascript diagrams (from
http://highcharts.com/, don't want to advertise, but since you've
asked ;)) that I use in our wicket app.

and when I click on a part of the diagramm I want to open a wicket
panel that loads data for that specific part of the diagramm.

so I got everything working except the panel replacement. I also tried
the MyPanel.this.addOrReplacecomponent(myAjaxLoadedPanel) before with
no effect, but maybe I've screwed something else up then. Gonna try it
again, thanks.


On Sun, Jul 24, 2011 at 5:06 PM, Martin Grigorov <mg...@apache.org> wrote:
> On Sun, Jul 24, 2011 at 5:40 PM, Michael Petritsch
> <mi...@gmail.com> wrote:
>> Yes, I removed the visibility related code and anything else for
>> simplicity and to focus on the actual problem.
>>
>> What I actually want to achieve is something like:
>>
>> public class MyPanel extends Panel {
>>  Panel myAjaxLoadedPanel;
>>  public MyPanel() {
>>   add(new AbstractDefaultAjaxBehavior() {
> Still not clear why you use directly this behavior but you know better :-)
>>           @Override
>>           protected void respond(AjaxRequestTarget target) {
>>             String someParameter =
>> RequestCycle.get().getRequest().getParameter("someParameter");
>>             if(someParameter.equals("1") {
> reverse the check here to avoid NPE
>>                myAjaxLoadedPanel = new Foo1Panel("myAjaxLoadedPanel");
>>             }
>>             ...
>>             else {
>>                myAjaxLoadedPanel = new FooXPanel("myAjaxLoadedPanel");
>>             }
>>             target.addComponent(myAjaxLoadedPanel);
>>           }
>>   }
>>   myAjaxLoadedPanel = new MyDefaultPanel("myAjaxLoadedPanel");
>>   myAjaxLoadedPanel.setOutputMarkupId(true);
>>   add(myAjaxLoadedPanel);
>> }
> The problem that I see is that you just re-assign the panel. Better
> see org.apache.wicket.Component.replaceWith(Component) and
> org.apache.wicket.MarkupContainer.replace(Component). These methods
> preserve the component hierarchy, i.e. the new assignment will
> inherits its parent (MyPanel.this) from the old assignment.
>
> What is the actual problem ? Sorry, but I didn't follow this thread before.
>
>>
>> On Sun, Jul 24, 2011 at 4:16 PM, Martin Grigorov <mg...@apache.org> wrote:
>>> On Sun, Jul 24, 2011 at 5:10 PM, Michael Petritsch
>>> <mi...@gmail.com> wrote:
>>>> I am using wicket 1.4.16, the markupplaceholder is there (checked with firebug).
>>>>
>>>> I have also tried it with a simple visible label:
>>>>
>>>> public class MyPanel extends Panel {
>>>>  Label myUpdatedLabel;
>>>>  public MyPanel() {
>>>>    add(new AbstractDefaultAjaxBehavior() {
>>> Why do you use this behavior but not a more specific one ? E.g.
>>> AjaxEventBehavior.
>>>>            @Override
>>>>            protected void respond(AjaxRequestTarget target) {
>>>>              myUpdatedLabel.setDefaultModel("bar");
>>>>              target.addComponent(myUpdatedLabel);
>>>>            }
>>>>    }
>>>>    myUpdatedLabel = new Label("myLabel","foo");
>>>>    myUpdatedLabel.setOutputMarkupId(true);
>>>>    add(myUpdatedLabel);
>>>> }
>>>>
>>>> This works, however what I actually have to do in the response()
>>>> method is the following:
>>>> myUpdatedLabel = new Label("myLabel","bar");
>>>> myUpdatedLabel.setOuputMarkupId(true);
>>>> target.addComponent(myUpdatedLabel);
>>> What you really want is:
>>> myUpdatedLabel.setDefaultModelObject("bar");
>>> target.addComponent(myUpdatedLabel);
>>>>
>>>> But when I try this nothing happens. The html of the label remains
>>>> untouched: <div id="myLabeld" wicket:id="myLabel">foo</div>
>>> setOutputMarkupPlaceholderTag(true) is needed only if you change the
>>> visibility of Ajax updated component. I don't see visibility related
>>> logic in your code.
>>>
>>> What exactly you want to achieve ?
>>>>
>>>> On Mon, Jul 18, 2011 at 4:59 AM, msj121 <ms...@gmail.com> wrote:
>>>>> I am not sure if it is still true, but if you have the label added, just the
>>>>> visibility is false from the beginning, then in older versions of wicket it
>>>>> would not actually put the component, even the placeholder. I dealt with
>>>>> this before, but I think in newer versions presumably this was changed....
>>>>> In theory a good way to check if this is an issue is to setvisible to true
>>>>> in the beginning and alternate.
>>>>>
>>>>>
>>>>> If your trying to add a new markup that never existed in html to the page,
>>>>> it should throw an error, and then you will need to use ListViews etc... as
>>>>> described above.
>>>>>
>>>>> --
>>>>> View this message in context: http://apache-wicket.1842946.n4.nabble.com/Loading-wicket-components-from-javascript-tp3673381p3674372.html
>>>>> Sent from the Users forum mailing list archive at Nabble.com.
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>>>
>>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> Martin Grigorov
>>> jWeekend
>>> Training, Consulting, Development
>>> http://jWeekend.com
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>>
>>
>
>
>
> --
> Martin Grigorov
> jWeekend
> Training, Consulting, Development
> http://jWeekend.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>

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


Re: Loading wicket components from javascript

Posted by Martin Grigorov <mg...@apache.org>.
On Sun, Jul 24, 2011 at 5:40 PM, Michael Petritsch
<mi...@gmail.com> wrote:
> Yes, I removed the visibility related code and anything else for
> simplicity and to focus on the actual problem.
>
> What I actually want to achieve is something like:
>
> public class MyPanel extends Panel {
>  Panel myAjaxLoadedPanel;
>  public MyPanel() {
>   add(new AbstractDefaultAjaxBehavior() {
Still not clear why you use directly this behavior but you know better :-)
>           @Override
>           protected void respond(AjaxRequestTarget target) {
>             String someParameter =
> RequestCycle.get().getRequest().getParameter("someParameter");
>             if(someParameter.equals("1") {
reverse the check here to avoid NPE
>                myAjaxLoadedPanel = new Foo1Panel("myAjaxLoadedPanel");
>             }
>             ...
>             else {
>                myAjaxLoadedPanel = new FooXPanel("myAjaxLoadedPanel");
>             }
>             target.addComponent(myAjaxLoadedPanel);
>           }
>   }
>   myAjaxLoadedPanel = new MyDefaultPanel("myAjaxLoadedPanel");
>   myAjaxLoadedPanel.setOutputMarkupId(true);
>   add(myAjaxLoadedPanel);
> }
The problem that I see is that you just re-assign the panel. Better
see org.apache.wicket.Component.replaceWith(Component) and
org.apache.wicket.MarkupContainer.replace(Component). These methods
preserve the component hierarchy, i.e. the new assignment will
inherits its parent (MyPanel.this) from the old assignment.

What is the actual problem ? Sorry, but I didn't follow this thread before.

>
> On Sun, Jul 24, 2011 at 4:16 PM, Martin Grigorov <mg...@apache.org> wrote:
>> On Sun, Jul 24, 2011 at 5:10 PM, Michael Petritsch
>> <mi...@gmail.com> wrote:
>>> I am using wicket 1.4.16, the markupplaceholder is there (checked with firebug).
>>>
>>> I have also tried it with a simple visible label:
>>>
>>> public class MyPanel extends Panel {
>>>  Label myUpdatedLabel;
>>>  public MyPanel() {
>>>    add(new AbstractDefaultAjaxBehavior() {
>> Why do you use this behavior but not a more specific one ? E.g.
>> AjaxEventBehavior.
>>>            @Override
>>>            protected void respond(AjaxRequestTarget target) {
>>>              myUpdatedLabel.setDefaultModel("bar");
>>>              target.addComponent(myUpdatedLabel);
>>>            }
>>>    }
>>>    myUpdatedLabel = new Label("myLabel","foo");
>>>    myUpdatedLabel.setOutputMarkupId(true);
>>>    add(myUpdatedLabel);
>>> }
>>>
>>> This works, however what I actually have to do in the response()
>>> method is the following:
>>> myUpdatedLabel = new Label("myLabel","bar");
>>> myUpdatedLabel.setOuputMarkupId(true);
>>> target.addComponent(myUpdatedLabel);
>> What you really want is:
>> myUpdatedLabel.setDefaultModelObject("bar");
>> target.addComponent(myUpdatedLabel);
>>>
>>> But when I try this nothing happens. The html of the label remains
>>> untouched: <div id="myLabeld" wicket:id="myLabel">foo</div>
>> setOutputMarkupPlaceholderTag(true) is needed only if you change the
>> visibility of Ajax updated component. I don't see visibility related
>> logic in your code.
>>
>> What exactly you want to achieve ?
>>>
>>> On Mon, Jul 18, 2011 at 4:59 AM, msj121 <ms...@gmail.com> wrote:
>>>> I am not sure if it is still true, but if you have the label added, just the
>>>> visibility is false from the beginning, then in older versions of wicket it
>>>> would not actually put the component, even the placeholder. I dealt with
>>>> this before, but I think in newer versions presumably this was changed....
>>>> In theory a good way to check if this is an issue is to setvisible to true
>>>> in the beginning and alternate.
>>>>
>>>>
>>>> If your trying to add a new markup that never existed in html to the page,
>>>> it should throw an error, and then you will need to use ListViews etc... as
>>>> described above.
>>>>
>>>> --
>>>> View this message in context: http://apache-wicket.1842946.n4.nabble.com/Loading-wicket-components-from-javascript-tp3673381p3674372.html
>>>> Sent from the Users forum mailing list archive at Nabble.com.
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>
>>>
>>
>>
>>
>> --
>> Martin Grigorov
>> jWeekend
>> Training, Consulting, Development
>> http://jWeekend.com
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>



-- 
Martin Grigorov
jWeekend
Training, Consulting, Development
http://jWeekend.com

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


Re: Loading wicket components from javascript

Posted by Michael Petritsch <mi...@gmail.com>.
Yes, I removed the visibility related code and anything else for
simplicity and to focus on the actual problem.

What I actually want to achieve is something like:

public class MyPanel extends Panel {
 Panel myAjaxLoadedPanel;
 public MyPanel() {
   add(new AbstractDefaultAjaxBehavior() {
           @Override
           protected void respond(AjaxRequestTarget target) {
             String someParameter =
RequestCycle.get().getRequest().getParameter("someParameter");
             if(someParameter.equals("1") {
                myAjaxLoadedPanel = new Foo1Panel("myAjaxLoadedPanel");
             }
             ...
             else {
                myAjaxLoadedPanel = new FooXPanel("myAjaxLoadedPanel");
             }
             target.addComponent(myAjaxLoadedPanel);
           }
   }
   myAjaxLoadedPanel = new MyDefaultPanel("myAjaxLoadedPanel");
   myAjaxLoadedPanel.setOutputMarkupId(true);
   add(myAjaxLoadedPanel);
}

On Sun, Jul 24, 2011 at 4:16 PM, Martin Grigorov <mg...@apache.org> wrote:
> On Sun, Jul 24, 2011 at 5:10 PM, Michael Petritsch
> <mi...@gmail.com> wrote:
>> I am using wicket 1.4.16, the markupplaceholder is there (checked with firebug).
>>
>> I have also tried it with a simple visible label:
>>
>> public class MyPanel extends Panel {
>>  Label myUpdatedLabel;
>>  public MyPanel() {
>>    add(new AbstractDefaultAjaxBehavior() {
> Why do you use this behavior but not a more specific one ? E.g.
> AjaxEventBehavior.
>>            @Override
>>            protected void respond(AjaxRequestTarget target) {
>>              myUpdatedLabel.setDefaultModel("bar");
>>              target.addComponent(myUpdatedLabel);
>>            }
>>    }
>>    myUpdatedLabel = new Label("myLabel","foo");
>>    myUpdatedLabel.setOutputMarkupId(true);
>>    add(myUpdatedLabel);
>> }
>>
>> This works, however what I actually have to do in the response()
>> method is the following:
>> myUpdatedLabel = new Label("myLabel","bar");
>> myUpdatedLabel.setOuputMarkupId(true);
>> target.addComponent(myUpdatedLabel);
> What you really want is:
> myUpdatedLabel.setDefaultModelObject("bar");
> target.addComponent(myUpdatedLabel);
>>
>> But when I try this nothing happens. The html of the label remains
>> untouched: <div id="myLabeld" wicket:id="myLabel">foo</div>
> setOutputMarkupPlaceholderTag(true) is needed only if you change the
> visibility of Ajax updated component. I don't see visibility related
> logic in your code.
>
> What exactly you want to achieve ?
>>
>> On Mon, Jul 18, 2011 at 4:59 AM, msj121 <ms...@gmail.com> wrote:
>>> I am not sure if it is still true, but if you have the label added, just the
>>> visibility is false from the beginning, then in older versions of wicket it
>>> would not actually put the component, even the placeholder. I dealt with
>>> this before, but I think in newer versions presumably this was changed....
>>> In theory a good way to check if this is an issue is to setvisible to true
>>> in the beginning and alternate.
>>>
>>>
>>> If your trying to add a new markup that never existed in html to the page,
>>> it should throw an error, and then you will need to use ListViews etc... as
>>> described above.
>>>
>>> --
>>> View this message in context: http://apache-wicket.1842946.n4.nabble.com/Loading-wicket-components-from-javascript-tp3673381p3674372.html
>>> Sent from the Users forum mailing list archive at Nabble.com.
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>>
>>
>
>
>
> --
> Martin Grigorov
> jWeekend
> Training, Consulting, Development
> http://jWeekend.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>

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


Re: Loading wicket components from javascript

Posted by Martin Grigorov <mg...@apache.org>.
On Sun, Jul 24, 2011 at 5:10 PM, Michael Petritsch
<mi...@gmail.com> wrote:
> I am using wicket 1.4.16, the markupplaceholder is there (checked with firebug).
>
> I have also tried it with a simple visible label:
>
> public class MyPanel extends Panel {
>  Label myUpdatedLabel;
>  public MyPanel() {
>    add(new AbstractDefaultAjaxBehavior() {
Why do you use this behavior but not a more specific one ? E.g.
AjaxEventBehavior.
>            @Override
>            protected void respond(AjaxRequestTarget target) {
>              myUpdatedLabel.setDefaultModel("bar");
>              target.addComponent(myUpdatedLabel);
>            }
>    }
>    myUpdatedLabel = new Label("myLabel","foo");
>    myUpdatedLabel.setOutputMarkupId(true);
>    add(myUpdatedLabel);
> }
>
> This works, however what I actually have to do in the response()
> method is the following:
> myUpdatedLabel = new Label("myLabel","bar");
> myUpdatedLabel.setOuputMarkupId(true);
> target.addComponent(myUpdatedLabel);
What you really want is:
myUpdatedLabel.setDefaultModelObject("bar");
target.addComponent(myUpdatedLabel);
>
> But when I try this nothing happens. The html of the label remains
> untouched: <div id="myLabeld" wicket:id="myLabel">foo</div>
setOutputMarkupPlaceholderTag(true) is needed only if you change the
visibility of Ajax updated component. I don't see visibility related
logic in your code.

What exactly you want to achieve ?
>
> On Mon, Jul 18, 2011 at 4:59 AM, msj121 <ms...@gmail.com> wrote:
>> I am not sure if it is still true, but if you have the label added, just the
>> visibility is false from the beginning, then in older versions of wicket it
>> would not actually put the component, even the placeholder. I dealt with
>> this before, but I think in newer versions presumably this was changed....
>> In theory a good way to check if this is an issue is to setvisible to true
>> in the beginning and alternate.
>>
>>
>> If your trying to add a new markup that never existed in html to the page,
>> it should throw an error, and then you will need to use ListViews etc... as
>> described above.
>>
>> --
>> View this message in context: http://apache-wicket.1842946.n4.nabble.com/Loading-wicket-components-from-javascript-tp3673381p3674372.html
>> Sent from the Users forum mailing list archive at Nabble.com.
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>



-- 
Martin Grigorov
jWeekend
Training, Consulting, Development
http://jWeekend.com

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


Re: Loading wicket components from javascript

Posted by Michael Petritsch <mi...@gmail.com>.
I am using wicket 1.4.16, the markupplaceholder is there (checked with firebug).

I have also tried it with a simple visible label:

public class MyPanel extends Panel {
  Label myUpdatedLabel;
  public MyPanel() {
    add(new AbstractDefaultAjaxBehavior() {
            @Override
            protected void respond(AjaxRequestTarget target) {
              myUpdatedLabel.setDefaultModel("bar");
              target.addComponent(myUpdatedLabel);
            }
    }
    myUpdatedLabel = new Label("myLabel","foo");
    myUpdatedLabel.setOutputMarkupId(true);
    add(myUpdatedLabel);
}

This works, however what I actually have to do in the response()
method is the following:
myUpdatedLabel = new Label("myLabel","bar");
myUpdatedLabel.setOuputMarkupId(true);
target.addComponent(myUpdatedLabel);

But when I try this nothing happens. The html of the label remains
untouched: <div id="myLabeld" wicket:id="myLabel">foo</div>

On Mon, Jul 18, 2011 at 4:59 AM, msj121 <ms...@gmail.com> wrote:
> I am not sure if it is still true, but if you have the label added, just the
> visibility is false from the beginning, then in older versions of wicket it
> would not actually put the component, even the placeholder. I dealt with
> this before, but I think in newer versions presumably this was changed....
> In theory a good way to check if this is an issue is to setvisible to true
> in the beginning and alternate.
>
>
> If your trying to add a new markup that never existed in html to the page,
> it should throw an error, and then you will need to use ListViews etc... as
> described above.
>
> --
> View this message in context: http://apache-wicket.1842946.n4.nabble.com/Loading-wicket-components-from-javascript-tp3673381p3674372.html
> Sent from the Users forum mailing list archive at Nabble.com.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>

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


Re: Loading wicket components from javascript

Posted by msj121 <ms...@gmail.com>.
I am not sure if it is still true, but if you have the label added, just the
visibility is false from the beginning, then in older versions of wicket it
would not actually put the component, even the placeholder. I dealt with
this before, but I think in newer versions presumably this was changed....
In theory a good way to check if this is an issue is to setvisible to true
in the beginning and alternate.


If your trying to add a new markup that never existed in html to the page,
it should throw an error, and then you will need to use ListViews etc... as
described above.

--
View this message in context: http://apache-wicket.1842946.n4.nabble.com/Loading-wicket-components-from-javascript-tp3673381p3674372.html
Sent from the Users forum mailing list archive at Nabble.com.

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


Re: Loading wicket components from javascript

Posted by Michael Petritsch <mi...@gmail.com>.
Thanks, gonna try this.

I hope this also works for adding Components with subcomponents (e.g.
Tables, Panels etc.) and I don't have to manually
Wicket...appendChild() all the subcomponents in js.

On Sun, Jul 17, 2011 at 5:38 PM, Bertrand Guay-Paquet
<be...@step.polymtl.ca> wrote:
> Hi,
>
> Have you seen
> http://wicketinaction.com/2008/10/repainting-only-newly-created-repeater-items-via-ajax/
> ? I used this method to add form inputs via ajax. If I understand correctly
> what you want to do, you should be able to use this for adding labels.
>
> Bertrand
>
> On 17/07/2011 9:23 AM, Michael Petritsch wrote:
>>
>> Hi,
>>
>> is there a way to load wicket components from javascript? I tried the
>> https://cwiki.apache.org/WICKET/calling-wicket-from-javascript.html
>> approach. I tried to add a Label but it wasn't visible on the page. I
>> tried to add a Panel but it never replaced the markupPlaceHolder I
>> added for it. All I can do is send some js back via
>> target.appendJavascript. Am I using it wrong or is there another way
>> to do this?
>>
>> regards,
>> Michael
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>

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


Re: Loading wicket components from javascript

Posted by Bertrand Guay-Paquet <be...@step.polymtl.ca>.
Hi,

Have you seen 
http://wicketinaction.com/2008/10/repainting-only-newly-created-repeater-items-via-ajax/ 
? I used this method to add form inputs via ajax. If I understand 
correctly what you want to do, you should be able to use this for adding 
labels.

Bertrand

On 17/07/2011 9:23 AM, Michael Petritsch wrote:
> Hi,
>
> is there a way to load wicket components from javascript? I tried the
> https://cwiki.apache.org/WICKET/calling-wicket-from-javascript.html
> approach. I tried to add a Label but it wasn't visible on the page. I
> tried to add a Panel but it never replaced the markupPlaceHolder I
> added for it. All I can do is send some js back via
> target.appendJavascript. Am I using it wrong or is there another way
> to do this?
>
> regards,
> Michael
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>

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