I assume the getCheese method in your code below is declared public static to
keep the example simple and to the point; you wouldn't normally expect to
get your cheeses from a Page class.
If you're comfortable with your page being coupled to the DAO interface
(without, for instance, a service layer in between), you can just inject the
DAO into your Component (Page) using 
http://cwiki.apache.org/WICKET/spring.html Wicket's @SpringBean annotation 
and have a 
    private Cheese getCheese(String name)
method that uses the DAO (refactor out your getting the name form a
PageParameters into a separate method as well). 
Since you are following Wicket In Action, check out the sections on
detachable models and layered architectures.

@SpringBean
private ICheeseDao dao;

Regards - Cemal
http://www.jWeekend.co.uk http://jWeekend.co.uk 




quizzical wrote:
> 
> Hi Everyone,
> 
> I'm just getting started with wicket and am learning by playing around
> with building an ecommerce application on top of wicket, spring and
> hibernate. I've been (Ha!) using @SpringBean to inject my spring
> dependencies and am very impressed with it.
> 
> One thing I'm wondering about is how to use @SpringBean with a pattern in
> the 'wicket in action' book. Specifically, when creating a
> bookmarkablePageLink with pageparameters this pattern is used:
> 
> public class CheeseDetailsPage extends WebPage {
>     // bookmarkable constructor
>     public CheeseDetailsPage(PageParameters parameters) {   #1
>         this(getCheese(parameters));
>     }
>     // non-bookmarkable constructor
>     public CheeseDetailsPage(Cheese cheese) {         #2
>         // do cheesy stuff with the cheese
>     }
>     /** Retrieves a cheese object based on the ‘name’ parameter. */
>     public static Cheese getCheese(PageParameters parameters) { #3
>         String name = parameters.getString("name", "");
>         if("".equals(name)) return null;
>         CheeseDao dao = ...;
>         return dao.getCheeseByName(name);
>     }
> }
> 
> I like this pattern but i'm having a problem with injecting my
> dependencies. The getCheese() method is static, which means that the
> CheeseDao would have to be static. I haven't delved into the code of the
> @SpringBean proxy or the wicket serialization code (I have read the wiki
> on @SpringBean) and I don't have an amazing understanding of proxies so
> maybe i'm just being obtuse but heres my question.
> 
> Is there any reason not to make the DAO static?
> 
> Cheers in advance
> 
> 

-- 
View this message in context: 
http://www.nabble.com/%40SpringBean-with-page-creation-patterns-tp20845794p20854319.html
Sent from the Wicket - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to