The problem is, as Igor pointed, you cannot re-render a component via AJAX
if it has set setRenderBodyOnly(true)... Why?
<div wicket:id="testAjax">
  <p>Content...</p>
</div>

will be renderend as

<p>Content...</p>

instead of

<div id="someid">
  <p>Content...</p>
</div>

So, there is no way wicket AJAX js can replace the div with something
else... Additionally you have to set setOutputMarkupId(true) on the
component you want to replace..

Ernesto

On Mon, Oct 6, 2008 at 9:41 AM, Yazeed Isaacs <
[EMAIL PROTECTED]> wrote:

> Hi Igor
>
> Here is the java code:
>
> add(new AjaxButton("ajaxSubmitButton", this) {
>
>        protected void onSubmit(AjaxRequestTarget target, Form form) {
>
>                AjaxLazyLoadPanel transactions = new AjaxLazyLoadPanel(
>                                "transactions") {
>
>                        private static final long serialVersionUID = 1L;
>
>                        @Override
>                        public Component getLazyLoadComponent(String id)
> {
>
>                                TransactionQuery transactionQuery = new
> TransactionQuery();
>
>
> transactionQuery.setCardNumber(cardNumberField
>                                                .getInput());
>
> transactionQuery.setDateFrom(dateFromField
>                                                .getInput());
>
> transactionQuery.setDateTo(dateToField.getInput());
>
> transactionQuery.setStoreId(storeIdsDropDownChoice
>                                                .getInput());
>                                transactionQuery
>
> .setTerminalId(terminalIdsDropDownChoice
>
> .getInput());
>                                int transactionNumber = 0;
>                                if (transNumberField.getInput() != null)
> {
>                                        if
> ((transNumberField.getInput().length() > 0))
>                                                transactionNumber =
> Integer
>
> .parseInt(transNumberField
>
> .getInput());
>                                }
>                                transactionQuery
>
> .setTransactionNumber(transactionNumber);
>
>
>
>                                AjaxFallbackDefaultDataTable results =
> new AjaxFallbackDefaultDataTable(
>                                                id,
>                                                columns,
>                                                new
> SortableTransactionQueryResultsDataProvider(
>
> transactionQuery), 10);
>
>                                // transactions.setOutputMarkupId(true);
>
>                                results.setRenderBodyOnly(false);
>
>                                return results;
>                        }
>
>                };
>
>                transactions.setRenderBodyOnly(false);
>
>                form.replace(transactions);
>
>                target.addComponent(transactions);
>        }
>
> });
>
>
>
> HTML code:
>
> <table cellpadding="2" cellspacing="0" width="521"
> wicket:id="transactions">
>
> </table>
>
>
> I have tried playing around with the way I've implemented this, but I
> keep on getting the same exception (java.lang.IllegalStateException)
> when I sort a column or navigate to a page.
>
> Let me know what you think.
>
> Regards,
> Yazeed Isaacs
>
>
>
> -----Original Message-----
> From: Igor Vaynberg [mailto:[EMAIL PROTECTED]
> Sent: 06 October 2008 09:31 AM
> To: users@wicket.apache.org
> Subject: Re: AjaxFallbackDefaultDataTable with ajax lazy loading -
> sorting and paging throws an IllegalStateException
>
> if i were you i would read the exception message, it is telling you
> exactly what is going wrong...if you showed some code or provided a
> quickstart we can help further.
>
> -igor
>
> On Mon, Oct 6, 2008 at 12:04 AM, Yazeed Isaacs
> <[EMAIL PROTECTED]> wrote:
> > Anybody?
> >
> > Guys please help me with this one.
> >
> >
> >
> > -----Original Message-----
> > From: Yazeed Isaacs
> > Sent: 03 October 2008 03:00 PM
> > To: users@wicket.apache.org
> > Subject: AjaxFallbackDefaultDataTable with ajax lazy loading - sorting
> and paging throws an IllegalStateException
> >
> > Hi
> >
> > I have an AjaxFallbackDefaultDataTable table and I am using an
> AjaxLazyLoadPanel when rendering this table. When I click the AjaxButton
> the table lazy loads.
> >
> > To summarize (in short) I have a AjaxButton that when clicked the
> onSubmit() method creates the AjaxLazyLoadPanel, the AjaxLazyLoadPanel's
> getLazyLoadComponent() method returns the AjaxFallbackDefaultDataTable
> table. Therefore the AjaxLazyLoadPanel renders as the
> AjaxFallbackDefaultDataTable table.
> >
> > The table lazy loads correctly, but when I click on a column in order
> to sort it or click on the page navigation links, I get the following
> error:
> >
> > java.lang.IllegalStateException: Ajax render cannot be called on
> component that has setRenderBodyOnly enabled.
> > ...
> > Component id = content, page =
> za.co.transactionjunction.transpector.pages.TransactionQueryPage, path =
> 8:transactionQueryForm:transactions:content.AjaxFallbackDefaultDataTable
> >
> > Where transactions is the AjaxLazyLoadPanel.
> >
> > Am I missing something? Please help.
> >
> > Regards,
> > Yazeed Isaacs
> >
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

Reply via email to