I didn't suggest improvements but second a question anotherone asked in this thread. And as a user I usually don't write re-usable components (in the sense re-usable by other people),
so this is not my focus.

And regarding the excellent wiki page: that's one thing I don't like about wicket. Documentation is not were in belongs, in the code or at least checked in with the code. I always have to figure
it out by myself if some wiki page is up-to-date or not.
I really never had such a hard time understanding a framework! (but to repeat myself, I'm not used to think in components when it comes to web design, so that's probably just me) Take for example Spring or Hibernate: the latest reference always comes with the distribution and the code is documented very well. (and maybe better aligns to my thinking)


On Oct 6, 2009, at 18:54, Igor Vaynberg wrote:

so maybe, in the future, you can take the time to understand why the
things are what they are first and then suggest improvements :)

there is an excellent page about models on our wiki. have a look,
maybe it will make things clear.

-igor

On Tue, Oct 6, 2009 at 9:48 AM, Robin Sander <robin.san...@gmx.net> wrote:

In this case one would have to use a Wrapper-Class which implements a
special interface Wicket
reacts on. Something like

 class personeditor extends panel {

 public personeditor(string id, person p) {
       super(id, new DetachableWrapper(p)); // let DetachableWrapper
implement ModelWrapper
  }

And then Component.getDefaultModelObject() reacts on ModelWrapper interface
(like on IModel now)

Object getDefaultModelObject() {
 if (model instanceof ModelWrapper) {
     return ((ModelWrapper)model).getObject();
 } else {
   return model'
 }

But then personeditor would hard code the detachable stuff so for re-usable
components this solution
would be worse than the current one.

I must admit that I don't get the whole detachable stuff in Wicket. I'm used
to think in horizontal tiers
where one tier does all the caching "automagically" (e.g. 2nd level cache in
JPA/Hibernate) and the
other tiers don't know about that fact. In addition, I'm so used to think in
the request/response pattern
that the Wicket component model is really hard to get for me (never did any
Swing...)



On Oct 6, 2009, at 17:09, Igor Vaynberg wrote:

so if i have

class personeditor extends panel {
 public personeditor(string id, person p) {..} }

instead of

class personeditor extends panel {
 public personeditor(string id, imodel<person> p) {..} }

how do i implement the lazy loading behavior if the person has to be
loaded from the database?

-igor

On Tue, Oct 6, 2009 at 12:36 AM, Robin Sander <robin.san...@gmx.net>
wrote:

Ok, I overlooked that IModel extends IDetachable but besides the detach()
method
- which would be a special model behaviour in my opinion - IModel does
have
two
methods only:

      T getObject();
      void setObject(final T object);

Where's the benefit of using
 new Component<MyBean>("xy", new Model<MyBean>(myBean))
and then access the actual model (object) by using
getObject()/setObject()
instead of
 new Component<MyBean>("xy", myBean)
and then having a field
 T model;
which could be directly accessed? (or even wrapped if you want to
implement
additional
stuff)

A user may add still addional behaviour by implementing special
interfaces
like Detachable
or something. This approach looks more natural for me but I'm asking more
out of curiosity...


On Oct 5, 2009, at 18:32, Jeremy Thomerson wrote:

On Mon, Oct 5, 2009 at 7:44 AM, Robin Sander <robin.san...@gmx.net>
wrote:

Another question because someone mentioned it in this thread and I
asked
this question myself:
why do we need an empty interface for Model? Why can't a mere String or
any
serializable POJO be
used as a model? (than this discussion about the name would end
also...)


I'm not sure I understand what you're saying. IModel is currently the interface and is not an empty interface. And an instance of IModel is a data proxy / location service - not the actual data itself - which is
whay
any POJO can not be a model.  The POJO is the model object.

--
Jeremy Thomerson
http://www.wickettraining.com





Reply via email to