You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by alexena <pa...@hotmail.com> on 2014/09/08 15:47:43 UTC

AbstractDefaultAjaxBehavior target does not refresh components

Hi everyone,

I have a problem with AbstractDefaultAjaxBehavior  on receiving POST request
sent by client side. Target on respond method does not seem to work - it
process post request but target.add(component) does not refresh a component
in  parameter.
What I'm trying to do is process post request witch contains a set of search
fields written by user. Then, I translate a received json into SQL request
and then I update the ListView to show the results of user request. 
In my js I have:
 $.ajax({
		url : callbackUrl2,
		type : 'POST',
		cache : false,
		dataType : 'json',
	    data: JSON.stringify(valuesArray),
	    contentType: "application/json; charset=utf-8",
	    success:  function(data) {
	    		console.log(data);
	    	}
});

and on the server side I have:
this.ajaxbeh2 = new AbstractDefaultAjaxBehavior() {

			/**
			 * 
			 */
			private static final long serialVersionUID = 1L;

			@Override
			public void renderHead(final Component component,
					final IHeaderResponse response) {
				super.renderHead(component, response);
				response.render(JavaScriptHeaderItem.forScript(
						"var callbackUrl2 = '" + this.getCallbackUrl() + "';",
						"callbackurl2"));

			}
	@Override
			protected void respond(final AjaxRequestTarget target) {
                  
           // some code to process json sent by post request

// this part has no effect on the application
                                               
SearchPage.this.pageLabelLabel
								.setDefaultModelObject("Search Results");
						target.add(SearchPage.this.pageLabelLabel);
						target.add(SearchPage.this.pageLabelLabel);
						SearchPage.this.patientsListView
								.setList(SearchPage.this.patientsList);

						target.add(patiensContainer);
						target.addChildren(SearchPage.this.patientsListView,
								Label.class);

Do you have an idea why target is ignoring in this code?

Thanks for your help,
Alex

--
View this message in context: http://apache-wicket.1842946.n4.nabble.com/AbstractDefaultAjaxBehavior-target-does-not-refresh-components-tp4667379.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: AbstractDefaultAjaxBehavior target does not refresh components

Posted by Martin Grigorov <mg...@apache.org>.
Hi,

You should use Wicket.Ajax.post() instead of jQuery.ajax() to make Ajax
call. Otherwise Wicket won't be able to calculate the baseUrl and all urls
created in this request cycle would be wrong.

Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov


On Mon, Sep 8, 2014 at 4:47 PM, alexena <pa...@hotmail.com> wrote:

> Hi everyone,
>
> I have a problem with AbstractDefaultAjaxBehavior  on receiving POST
> request
> sent by client side. Target on respond method does not seem to work - it
> process post request but target.add(component) does not refresh a component
> in  parameter.
> What I'm trying to do is process post request witch contains a set of
> search
> fields written by user. Then, I translate a received json into SQL request
> and then I update the ListView to show the results of user request.
> In my js I have:
>  $.ajax({
>                 url : callbackUrl2,
>                 type : 'POST',
>                 cache : false,
>                 dataType : 'json',
>             data: JSON.stringify(valuesArray),
>             contentType: "application/json; charset=utf-8",
>             success:  function(data) {
>                         console.log(data);
>                 }
> });
>
> and on the server side I have:
> this.ajaxbeh2 = new AbstractDefaultAjaxBehavior() {
>
>                         /**
>                          *
>                          */
>                         private static final long serialVersionUID = 1L;
>
>                         @Override
>                         public void renderHead(final Component component,
>                                         final IHeaderResponse response) {
>                                 super.renderHead(component, response);
>
> response.render(JavaScriptHeaderItem.forScript(
>                                                 "var callbackUrl2 = '" +
> this.getCallbackUrl() + "';",
>                                                 "callbackurl2"));
>
>                         }
>         @Override
>                         protected void respond(final AjaxRequestTarget
> target) {
>
>            // some code to process json sent by post request
>
> // this part has no effect on the application
>
> SearchPage.this.pageLabelLabel
>
> .setDefaultModelObject("Search Results");
>
> target.add(SearchPage.this.pageLabelLabel);
>
> target.add(SearchPage.this.pageLabelLabel);
>
> SearchPage.this.patientsListView
>
> .setList(SearchPage.this.patientsList);
>
>
> target.add(patiensContainer);
>
> target.addChildren(SearchPage.this.patientsListView,
>
> Label.class);
>
> Do you have an idea why target is ignoring in this code?
>
> Thanks for your help,
> Alex
>
> --
> View this message in context:
> http://apache-wicket.1842946.n4.nabble.com/AbstractDefaultAjaxBehavior-target-does-not-refresh-components-tp4667379.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
>
>