because you're inside the constructor, and the fragment hasn't been
added to the page yet. So there is no parent to ask for a Form
instance.
Martijn
On Tue, Aug 26, 2008 at 11:35 PM, Ritesh Trivedi
<[EMAIL PROTECTED]> wrote:
>
> Edvin,
>
> Before posting, I already made Form a private member of the toolbar and
> passed it from the parent fragment as a workaround.
>
> My main question was - why didnt getForm() on the button work? and second -
> not sure how you are saying markupProvider is the form? markup provider is
> the page. My page markup file has the fragments. What am I missing?
>
> <wicket:extend>
> Cart...
>
> <wicket:fragment wicket:id="fragment1">
> <form>
> <div id="include_fragment2"></div>
> </wicket:fragment>
>
> <wicket:fragment wicket:id="fragment2">
> <button wicket:id="checkoutButton"/>
> </wicket:fragment>
>
> ...
> </wicket:extend>
>
>
> Edvin Syse wrote:
>>
>> Your CartActionToolbar#markupProvider is infact your form, so you can do
>> ((Form)markupProvider).setDefaultButton(checkoutButton), or you could
>> make the cartForm a private field in ViewCartPage and just access it
>> with cartForm.setDefaultButton(checkoutButton).
>>
>> For the first approach you'll need to assign the markupProvider to a
>> private field in CartActionToolbar, or make markupProvider final in the
>> constructor.
>>
>> Does that help?
>>
>> -- Edvin
>>
>> Ritesh Trivedi skrev:
>>> public class ViewCartPage
>>> {
>>> ....
>>> // Add feedback panel
>>> add(new FeedbackPanel("feedbackPanel", new
>>> ComponentFeedbackMessageFilter(ViewCartPage.this)));
>>>
>>> ShoppingCart cart = ShoppingCartWorkerEx.getShoppingCart();
>>> int cartSize = cart.size();
>>>
>>> if (cartSize == 0)
>>> add(new Label("viewCartContainer", new
>>> ResourceModel("Cart.empty.label", "Your Shopping Cart is empty")));
>>> else
>>> add(new CartDetailsFragment("viewCartContainer",
>>> "cartDetailsFragment", this));
>>> }
>>>
>>> public class CartDetailsFragment
>>> extends Fragment
>>> {
>>> public static final long serialVersionUID = 1L;
>>>
>>> private List<CartItemVo> _cartItemVoList = FastList.<CartItemVo>
>>> newInstance();
>>>
>>> public CartDetailsFragment(String id, String fragmentId,
>>> MarkupContainer markupProvider)
>>> {
>>> super(id, fragmentId, markupProvider);
>>> populate();
>>> }
>>>
>>> private void populate()
>>> {
>>> _cartItemVoList =
>>> ShoppingCartWorkerEx.getCartItemVoListFromSession();
>>>
>>> Form cartForm = new Form("cartForm", new Model(new
>>> ViewCartWrapperModelObject(new ShippingOptionByCriteria(
>>> null, null), _cartItemVoList)));
>>> add(cartForm);
>>>
>>> // Cart Header Toolbar
>>> cartForm.add(new CartActionToolbar("cartHeaderToolbar",
>>> "cartActionToolbar", ViewCartPage.this, cartForm));
>>>
>>> ......
>>> } // end cart detail fragment
>>>
>>>
>>> private class CartActionToolbar
>>> extends Fragment
>>> {
>>>
>>> public CartActionToolbar(String id, String markupId,
>>> MarkupContainer
>>> markupProvider)
>>> {
>>> super(id, markupId, markupProvider);
>>> populate();
>>> }
>>>
>>> public void populate()
>>> {
>>> // Checkout button
>>> Button checkoutButton = new Button("checkoutButton", new
>>> ResourceModel("CartForm.checkoutButton"))
>>> {
>>> public static final long serialVersionUID = 1L;
>>>
>>> @Override
>>> public void onSubmit()
>>> {
>>> ...
>>> setResponsePage(CheckoutPage.class);
>>> }
>>> };
>>> add(checkoutButton);
>>> LOG.info("!!!!!!!!!!!!!!!! Checkout button parent " +
>>> checkoutButton.getParent() + " grand parent " +
>>> checkoutButton.getParent().getParent() + " getForm()
>>> " +
>>> checkoutButton.getForm() +
>>> " path " + checkoutButton.getPath());
>>>
>>> checkoutButton.getForm().setDefaultButton(checkoutButton);
>>>
>>>
>>>
>>> Edvin Syse wrote:
>>>> Please post the Java-code.
>>>>
>>>> -- Edvin
>>>>
>>>> Ritesh Trivedi skrev:
>>>>> Hi,
>>>>>
>>>>> I have a Page which contains Fragment (A) and which in turn contains
>>>>> Fragment (B). Fragment B has a button. In Fragment B class if I do
>>>>> button.getForm() I get null. I also tried
>>>>> button.getParent().getParent()
>>>>> which should be a form - but it returns null as well.
>>>>>
>>>>> Here is the markup
>>>>>
>>>>> <body>
>>>>> <wicket:extend>
>>>>> <div class="subColumnHolder">
>>>>> <div wicket:id="feedbackPanel"></div>
>>>>> <div wicket:id="viewCartContainer">[Cart Contents
>>>>> here]</div>
>>>>> </div>
>>>>>
>>>>> <wicket:fragment wicket:id="cartContentsFragment">
>>>>> <h2>Your Shopping Cart</h2>
>>>>> <p>Please review your shopping cart and press checkout
>>>>> to
>>>>> proceed with your order</p>
>>>>> <form wicket:id="cartForm">
>>>>> <div class="actionButtons"
>>>>> wicket:id="cartHeaderToolbar"></div> <-----Fragment cartActionToolbar
>>>>> ....
>>>>> </form>
>>>>> </wicket:fragment>
>>>>> <wicket:fragment wicket:id="cartActionToolbar">
>>>>> <input wicket:id="checkoutButton" type="submit"
>>>>> value="Checkout <<" class="button floatRight"/>
>>>>> ....
>>>>> </wicket:fragment>
>>>>>
>>>>> I have corresponding java code to add components properly - can post if
>>>>> needed.
>>>> ---------------------------------------------------------------------
>>>> 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]
>>
>>
>>
>
> --
> View this message in context:
> http://www.nabble.com/getForm%28%29-on-a-component-inside-2nd-level-Fragment-returns-null--tp19166943p19170881.html
> Sent from the Wicket - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
--
Become a Wicket expert, learn from the best: http://wicketinaction.com
Apache Wicket 1.3.4 is released
Get it now: http://www.apache.org/dyn/closer.cgi/wicket/1.3.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]