I did not override the method.    I just did and it is still not
working.  Here is what I have:

Also, where would one find this type of information.  I don't think the
online example show it and blindly guessing methods to look at in
javadoc doesn't seem efficient.

HTML:
                <tr>
                        <td><wicket:message key="userType">Type of
User:</wicket:message></td>
                        <td>
                                <span wicket:id="accountType">
                                        <input type="radio" />option 1
                                </span>
                        </td>
                </tr>
                <tr>
                        <td></td>
                        <td><span wicket:id="typeBox">The type
box</span></td>
                </tr>

Code:
                        // Account Type sub box
                        final WebMarkupContainer typeBox = new
WebMarkupContainer("typeBox") {

                                /* (non-Javadoc)
                                 * @see
org.apache.wicket.Component#callOnBeforeRenderIfNotVisible()
                                 */
                                @Override
                                protected boolean
callOnBeforeRenderIfNotVisible() {
                                        return true;
                                }
                                
                        };
                        typeBox.setVisible(false);
                        typeBox.setOutputMarkupId(true);
                        add(typeBox);
                        
                        // Account Type Select
                        List accountTypes = accountTypeDao.findAll();
                        ChoiceRenderer accountTypeChoiceRenderer = new
ChoiceRenderer("name", "code");
                        RadioChoice accountTypeRadio = new
RadioChoice("accountType", accountTypes, accountTypeChoiceRenderer);
                        //accountTypeRadio.setRequired(true);
                        // add the on click to the radio button
                        accountTypeRadio.add(new
AjaxFormChoiceComponentUpdatingBehavior () { 
                    private static final long serialVersionUID = 1L; 

                    @Override 
                    protected void onUpdate(AjaxRequestTarget target) { 
                        RadioChoice choice = (RadioChoice)
getComponent();
                        choice.updateModel();
                        
                        if (((AccountType)
choice.getModelObject()).getCode().equalsIgnoreCase("REP")) {
                                typeBox.setVisible(true);
                        } else {
                                typeBox.setVisible(false);      
                        }
                        target.addComponent(typeBox);
                    } 
                });                     

                        add(accountTypeRadio);


-----Original Message-----
From: Per Newgro [mailto:[email protected]] 
Sent: Wednesday, September 30, 2009 2:17 AM
To: [email protected]
Subject: Re: RadioChoice and Ajax to display a panel of dropdowns

Hey Jeff,

did you override this?


    /**
     * Override this method if you want onBeforeRender to be called even

when your component is not
     * visible. default this returns false.
     *
     * @return boolean, if true then onBeforeRender is called even for 
none visible components,
     *         default false.
     *
     * @see Component#onBeforeRender()
     */
    protected boolean callOnBeforeRenderIfNotVisible()
    {
        return false;
    }

If you add a visible and an invisible panel you have to override this on

the invisible one.

hth
Cheers
Per
> I want to create a list of radio buttons [I have that working] and an
> ajax event to fire whenever a radio button is clicked [I have this
> working].  If the radio button matches the one I am interested in then
I
> want to display additional information that must be filled in.  A
radio
> button selection is required.
>
>  
>
> I cannot get the additional information to display when I add the
> component back to the target.  I think it is because the additional
> information is originally set to not visible so the output markup id
is
> not written out.  How would I go about doing this?  It seems pretty
> standard.  Do I need to use panels and swap the appropriate panel [1 -
> empty panel, 2 - panel with additional info] into the target when
> needed?  That seems like a lot of code to do something fairly simple.
>
>  
>
> My code is below. 
>
>  
>
> Thanks.
>
>  
>
> Jeff
>
>  
>
> =====================
>
>  
>
> HTML:
>
>               <tr>
>
>                      <td><wicket:message key="userType">Type of
> User:</wicket:message></td>
>
>                      <td>
>
>                            <span wicket:id="accountType">
>
>                                   <input type="radio" />option 1
>
>                            </span>
>
>                      </td>
>
>               </tr>
>
>               <tr>
>
>                      <td></td>
>
>                      <td><span wicket:id="typeBox">The additional
> information</span></td>
>
>               </tr>
>
>  
>
> Java Code:
>
>                      // Account Type sub box
>
>                      final WebMarkupContainer typeBox = new
> WebMarkupContainer("typeBox");
>
>                      typeBox.setVisible(false);
>
>                      typeBox.setOutputMarkupId(true);
>
>                      add(typeBox);
>
>                      
>
>                      // Account Type Select
>
>                      List accountTypes = accountTypeDao.findAll();
>
>                      ChoiceRenderer accountTypeChoiceRenderer = new
> ChoiceRenderer("name", "code");
>
>                      RadioChoice accountTypeRadio = new
> RadioChoice("accountType", accountTypes, accountTypeChoiceRenderer);
>
>                      //accountTypeRadio.setRequired(true);    // THIS
> SHOULD REALLY BE REQUIRED
>
>                      // add the on click to the radio button
>
>                      accountTypeRadio.add(new
> AjaxFormChoiceComponentUpdatingBehavior () { 
>
>                    private static final long serialVersionUID = 1L; 
>
>  
>
>                    @Override 
>
>                    protected void onUpdate(AjaxRequestTarget target) {

>
>                      RadioChoice choice = (RadioChoice)
getComponent();
>
>                      choice.updateModel();
>
>                      
>
>                      if (((AccountType)
> choice.getModelObject()).getCode().equalsIgnoreCase("REP")) {
>
>                             typeBox.setVisible(true);
>
>                      } else {
>
>                             typeBox.setVisible(false); 
>
>                      }
>
>                      target.addComponent(typeBox);
>
>                    } 
>
>                });                
>
> _______________________________________ 
>
> Jeffrey A. Schneller
>
>  
>
> Envisa
>
> End-to-End E-Commerce for the Multi-Channel Merchant
>
>  
>
> 281 Pleasant Street
>
> Framingham, MA  01701
>
> P: (508) 405-1220 x115
>
> C: (508) 954-8044
>
> F: (508) 405-1219
>
>  
>
>
>   


---------------------------------------------------------------------
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