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]

Reply via email to