@Martin sounds like session is the way to go because passing something as a
page parameter means that the user could just simply change the ID to
whatever they want... never trust the client :-)

@Chris interesting project, I'll have to take a look.

Thank you both!

Bill-


On Tue, Jan 29, 2013 at 8:13 PM, Chris Colman
<chr...@stepaheadsoftware.com>wrote:

> Webapps are excellent candidates for injecting into the 'thread' rather
> than providing every injectable class with its own special constructor
> (a lot of boring, mechanical work and problem not as run time efficient)
> and then setting up XML or annotations to configure the inject
> mechanisms.
>
> A simple servlet filter "injects" (attaches to) the thread on the way in
> to servicing the request and detaches from the thread on the way out.
>
> We created a very lightweight framework that uses thread injection for
> this purpose and it works magically and requires no special changes to
> UI or model code to work. It's called expojo (expose POJOs) and it's at
> expojo.com
>
> A 'ModelExposer' object is always available to any active thread via a
> call to ModelExposer.get(). The ModelExposer provides repositories (kind
> of like 'look up' DAOs that contain your query methods for your
> particular ORM) and services (DAOs that can make changes to the model).
> So from anywhere in your code you have access to all the repository and
> services you will every need.
>
> It's not the way Spring or Guice do it but it works really well and
> doesn't need any XML or annotations at all and doesn't require you
> change your model or UI objects.
>
> The exPOJO servlet also implements 'open session/persistence manager in
> view' so you can avoid all those nasty 'lazy load' exceptions with ease.
>
>
>
> >-----Original Message-----
> >From: Bill Speirs [mailto:bill.spe...@gmail.com]
> >Sent: Tuesday, 29 January 2013 12:28 PM
> >To: users@wicket.apache.org
> >Subject: Re: Pages, Panels, and Dependency Injection
> >
> >Still struggling with how to do this. Martin, I understand that most
> people
> >will simply call new PanelA and new PanelB inside their MyPage code
> instead
> >of trying to inject them. However, how does one setup a page that
> requires
> >some service (DAO for example) and that might optionally require a
> >UserBean.
> >
> >So without using DI, I'd simply have 2 constructors:
> >
> >MyPage(DAO myDao)
> >
> >MyPage(DAO myDao, UserBean currentUser)
> >
> >But I cannot create that second constructor as I don't have anything to
> >bind (using Guice terms) UserBean to.
> >
> >Am I required to make a factory for MyPage at that point? Is it
> bad/wrong
> >to pass the UserBean into the constructor via a response page:
> >
> >setResponsePage(new MyPage(new DAO(), currentUser));
> >
> >Thanks...
> >
> >Bill-
> >
> >
> >On Fri, Nov 30, 2012 at 3:35 AM, Martin Grigorov
> ><mgrigo...@apache.org>wrote:
> >
> >> Hi,
> >>
> >> Most of the time people inject services to their components.
> >>
> >> To test just components you can use
> WicketTester#startComponentInPage()
> >> methods.
> >>
> >>
> >> On Fri, Nov 30, 2012 at 3:18 AM, William Speirs <wspe...@apache.org>
> >> wrote:
> >>
> >> > I'm having trouble understanding how to inject components into a
> page
> >so
> >> > that the page will be easy to unit test later. Say I have a page
> that
> >> > contains two panels. I can easily use constructor injection to
> inject
> >> these
> >> > panels into the page:
> >> >
> >> > class MyPage extends WebPage {
> >> > @Inject
> >> > public MyPage(PanelA a, PanelB b) { ... }
> >> > }
> >> >
> >> > The problem is that all Panels require an id during
> construction.[1]
> >How
> >> do
> >> > I supply the id to my Panels? I could simply construct every PanelA
> >with
> >> an
> >> > id of "panela" and every PanelB with an id of "panel", but that
> doesn't
> >> > seem very flexible. What do other people do in this situation? The
> hope
> >> > would be to pass mocked panels into the page during unit testing,
> >> > the separately test each panel.
> >> >
> >> > What if instead of a panel it was a button where the onSubmit
> method
> >must
> >> > be specified by overriding the method. How does one go about
> injecting
> >> such
> >> > a component so that it's still easy to test later in unit tests?
> >> >
> >> > All thoughts and/or best practices are greatly welcomed. For
> reference
> >> I'm
> >> > using Guice as my dependency injection framework and
> >> > GuiceWebApplicationFactory to inject components into pages.
> >> >
> >> > Thanks...
> >> >
> >> > Bill-
> >> >
> >> > [1]
> >> >
> >> >
> >>
> >http://ci.apache.org/projects/wicket/apidocs/6.0.x/org/apache/wicket/ma
> rkup
> >/html/panel/Panel.html
> >> >
> >>
> >>
> >>
> >> --
> >> Martin Grigorov
> >> jWeekend
> >> Training, Consulting, Development
> >> http://jWeekend.com <http://jweekend.com/>
> >>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
>
>

Reply via email to