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 &lt;&lt;" 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]

Reply via email to