Martijn,

here Java is not safe as a language. Yo're able to invoke overrided methods
on non-completely constructed objects.

from my perspective it is a regular case in Wicket:

class SampleComponent extends ... {
    String parameter;

    SampleComponent(String id, String parameter) {
        super(id);
        this.parameter = parameter;
    }

    // method is called from within superconstructor
    @Override
    void createAdditionalComponents(RepeatingView rv) {
        useSomehow(parameter);
    }
}

I know two approaches to work around:
- onBeforeRender 
- a closure as a constructor formal parameter.

But the latter does not help with built-in components.

If Wicket does not help us with adding appropriate method for
second-step-initialization it should document it in wiki, javadoc and books
"dear user, when overriding methods, beware using of yet unassigned
constructor parameters". Hmm ... sounds stupid :)


Martijn Dashorst wrote:
> 
> This has been discussed till death previously and we have excluded it
> from our roadmap. We will never have an init() method for components.
> Gossling gave us a Constructor to initialize your Objects.
> 
> Search and read the archives if you want more information on the subject.
> 
> Martijn
> 
> On Fri, May 15, 2009 at 12:36 AM, Juan G. Arias <juangar...@gmail.com>
> wrote:
>> It would be very nice to add a new phase for component creation, like I
>> said, an init() or createContent().
>> Is there a JIRA issue for that?
>> If yes, I will vote for it and suggest to change the name to something
>> _not_
>> related to the rendre phase.
>>
>> Thanks!
>> Juan
>>
>>
>> On Thu, May 14, 2009 at 3:31 PM, Daniel Stoch
>> <daniel.st...@gmail.com>wrote:
>>
>>> I think you can use hasBeenRendered() method instead of custom boolean
>>> flag.
>>>
>>> --
>>> Daniel
>>>
>>> On 2009-05-14, at 20:15, Jeremy Thomerson wrote:
>>>
>>>  You could probably do it in onBeforeRender - but you would need to
>>>> keep a boolean flag to check if it's the first render so that you
>>>> don't recreate them on a second render....  There was talking of
>>>> adding an onBeforeFirstRender method, but I don't think it's happened
>>>> yet - you could look for the method to see if I'm wrong.
>>>>
>>>> --
>>>> Jeremy Thomerson
>>>> http://www.wickettraining.com
>>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>>> For additional commands, e-mail: users-h...@wicket.apache.org
>>>
>>>
>>
> 
> 
> 
> -- 
> Become a Wicket expert, learn from the best: http://wicketinaction.com
> Apache Wicket 1.3.5 is released
> Get it now: http://www.apache.org/dyn/closer.cgi/wicket/1.3.
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Component-creation-and-initialization-tp23545666p23553458.html
Sent from the Wicket - User mailing list archive at Nabble.com.


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

Reply via email to