You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Ritesh Trivedi <ri...@gmail.com> on 2008/08/26 19:48:51 UTC

getForm() on a component inside 2nd level Fragment returns null?

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="cartContenttsFragment">
                <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.
-- 
View this message in context: http://www.nabble.com/getForm%28%29-on-a-component-inside-2nd-level-Fragment-returns-null--tp19166943p19166943.html
Sent from the Wicket - User 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:getForm() on a component inside 2nd level Fragment returns null?

Posted by fish3934 <fi...@163.com>.
 
 
 
 


在2008-08-27,"Ritesh Trivedi" <ri...@gmail.com> 写道:
>
>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
>
>
>        
>            

>                

>                
[Cart Contents
>here]

>            

>            
>            
>                
Your Shopping Cart

>                

Please review your shopping cart and press checkout to
>proceed with your order


>                
>                    
wicket:id="cartHeaderToolbar">
 <-----Fragment cartActionToolbar
>....
>                
>            
>            
>                value="Checkout <<" class="button floatRight"/>    
>                ....
>            
>
>I have corresponding java code to add components properly - can post if
>needed.
>-- 
>View this message in context: http://www.nabble.com/getForm%28%29-on-a-component-inside-2nd-level-Fragment-returns-null--tp19166943p19166943.html
>Sent from the Wicket - User 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: getForm() on a component inside 2nd level Fragment returns null?

Posted by Edvin Syse <ed...@sysedata.no>.
Ritesh Trivedi 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?
>   
Martijn answered the first one I see. Sorry for not stating it right away. I was more focused on finding a solution for you :)

So to the markupProvider being your form: You wrote:

// Cart Header Toolbar
cartForm.add(new CartActionToolbar("cartHeaderToolbar", "cartActionToolbar", ViewCartPage.this, cartForm));

And your only constructor in CartActionToolbar is:

public CartActionToolbar(String id, String markupId, MarkupContainer markupProvider)

I didn't count the arguments, I just saw that markupProvider was the last argument, and also that cartForm was the last argument you passed into it. (God damned wrapping in the mail client confused me, I read your mail on the ASUS EEPC - not the biggest screen in the world :) 

It seems you don't hit this constructor at all? :) 

Anyways, a cleaner way to do this is to override the onBeforeRender() method of the fragment. Then the component hierarchy is complete, so you can call getParent() or even better, getForm() directly on the component to get the form. Just remember to call super.onBeforeRender() as well :)


-- Edvin


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: getForm() on a component inside 2nd level Fragment returns null?

Posted by Martijn Dashorst <ma...@gmail.com>.
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
<ri...@gmail.com> 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: users-unsubscribe@wicket.apache.org
>>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>>
>>>>
>>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>>
>>
>>
>
> --
> 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: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>



-- 
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: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: getForm() on a component inside 2nd level Fragment returns null?

Posted by Ritesh Trivedi <ri...@gmail.com>.
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: users-unsubscribe@wicket.apache.org
>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>
>>>
>>>
>> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
> 
> 
> 

-- 
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: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: getForm() on a component inside 2nd level Fragment returns null?

Posted by Edvin Syse <ed...@sysedata.no>.
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: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>>
>>
>>
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: getForm() on a component inside 2nd level Fragment returns null?

Posted by Ritesh Trivedi <ri...@gmail.com>.
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: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/getForm%28%29-on-a-component-inside-2nd-level-Fragment-returns-null--tp19166943p19169316.html
Sent from the Wicket - User 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: getForm() on a component inside 2nd level Fragment returns null?

Posted by Edvin Syse <ed...@sysedata.no>.
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: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org