wicket-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alex Objelean <alex_objel...@yahoo.com>
Subject Re: "Pretty" URLs and sessions
Date Thu, 17 Dec 2009 21:45:30 GMT

You shouldn't have a code like this:
      getRequestCycle().setRedirect(false); 
      getRequestCycle().setRequestTarget(EmptyRequestTarget.getInstance()); 
      getResponse().redirect(" 
https://mysite/app/?wicket:bookmarkablePage=:com.myapp.UserAccount"); 

A more 'wicket way' of doing thins is this:

setResponsePage(UserAccount.class);

That means that a bookmarkable page will be created (a new instance of the
page will be instantiated).
You can also do something like this: 

setResponsePage(new UserAccount(account));

Or you could try to make this page as stateless as possible by passing
account id or other parameters to the page.... that depends..

Alex 


V. Jenks wrote:
> 
> Hit a snag!  At the cart page (going into the login page), I redirect to
> https like so:
> 
>       getRequestCycle().setRedirect(false);
>      
> getRequestCycle().setRequestTarget(EmptyRequestTarget.getInstance());
>       getResponse().redirect("https://mysite/app/account");
> 
> "user-account" being mapped like so in the "app" class:
> 
> mount(new HybridUrlCodingStrategy("/account", UserAccount.class));
> 
> ...gets me this exception:
> 
> org.apache.wicket.WicketRuntimeException: Can't instantiate page using
> constructor public com.agribeef.abcommerce.ui.UserAccount()
>         at
> org.apache.wicket.session.DefaultPageFactory.createPage(DefaultPageFactory.java:212)
>         at
> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:57)
>         at
> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:299)
>         at
> org.apache.wicket.request.target.coding.HybridUrlCodingStrategy$HybridBookmarkablePageRequestTarget.newPage(HybridUrlCodingStrategy.java:887)
>         at
> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:321)
>         at
> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:234)
>         at
> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:92)
>         at
> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1250)
> ...............................
> Caused by: java.lang.reflect.InvocationTargetException
>         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> Method)
>         at
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
>         at
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
>         at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
>         at
> org.apache.wicket.session.DefaultPageFactory.createPage(DefaultPageFactory.java:192)
>         ... 40 more
> Caused by: java.lang.NullPointerException
>         at com.myapp.UserAccount.<init>(UserAccount.java:44)
>         ... 45 more
> 
> ...which is of course, where I try to reference the stateful bean
> (ShoppingCartBean) that I'm passing around.
> 
> Prior to now, I just did this:
> 
>       getRequestCycle().setRedirect(false);
>      
> getRequestCycle().setRequestTarget(EmptyRequestTarget.getInstance());
>       getResponse().redirect("
> https://mysite/app/?wicket:bookmarkablePage=:com.myapp.UserAccount");
> 
> I could stick with that I guess, since it's trackable.  It would have been
> nice to use the Hybrid approach consistently, though.
> 
> -v
> 
> 
> On Thu, Dec 17, 2009 at 2:12 PM, Alex Objelean
> <alex_objelean@yahoo.com>wrote:
> 
>>
>> Also, it could be useful to check this out:
>>
>> http://day-to-day-stuff.blogspot.com/2008/10/wicket-extreme-consistent-urls.html
>>
>> Alex
>>
>>
>> V. Jenks wrote:
>> >
>> > Excellent, excellent!  This is exactly what I was after!  That
>> is...unless
>> > this SEO can find another monkey wrench to throw in it.  But...it looks
>> > like
>> > it's exactly what I need.  Thanks!
>> >
>> > Alex R. - good point on tracking info internally.  I think it'd be very
>> > useful but I'm dealing w/ the marketing dept.  They're so wowed by GA,
>> I
>> > doubt there's any turning back.
>> >
>> > Thanks guys.
>> >
>> > On Thu, Dec 17, 2009 at 12:08 PM, Alex Objelean
>> > <alex_objelean@yahoo.com>wrote:
>> >
>> >>
>> >> There are two possibilities:
>> >> 1) In your application class add the following:
>> >> mount(new HybridUrlCodingStrategy("/checkout", CheckoutPage.class));
>> >>
>> >> 2) If you have wicket-stuff annotation dependency
>> >> (
>> >>
>> http://wicketstuff.org/confluence/display/STUFFWIKI/wicketstuff-annotation
>> >> )
>> >> you can annotate your page class with:
>> >>
>> >> @MountPath(path="/checkout")
>> >> @MountHybrid
>> >> public class CheckoutPage extends WebPage {}
>> >>
>> >> Alex
>> >>
>> >>
>> >>
>> >> V. Jenks wrote:
>> >> >
>> >> > Thanks Alex.
>> >> >
>> >> > I just had another meeting w/ the SEO guy today and the idea is to
>> >> track
>> >> > orders moving through our storefront in order go gauge sales based
>> on
>> >> the
>> >> > SEO strategy.  In other words, where did our customers come from
>> >> (Google
>> >> > search?), what did they buy, and did they make it all the way
>> through
>> >> the
>> >> > checkout process.  We need to be able to track pages in Google
>> >> Analytics.
>> >> >
>> >> > If we could append/prepend some sort of value to the pages, while
>> >> keeping
>> >> > the dynamic Wicket page version parameter info in there, it would be
>> >> > sufficient.  In Analytics, the Wicket portion of the URL can be
>> removed
>> >> > and
>> >> > the rest would be used to identify traffic moving through the site.
>> >> >
>> >> > Is HybridUrlCodingStrategy the way to go, with this in mind?  Where
>> are
>> >> > some
>> >> > good examples as to how to implement it and do what I'm describing?
>> >> >
>> >> > Thanks again!
>> >> >
>> >> > -v
>> >> >
>> >> > On Tue, Dec 1, 2009 at 6:04 AM, Alex Objelean
>> >> > <alex_objelean@yahoo.com>wrote:
>> >> >
>> >> >>
>> >> >> You can mount your page with HybridUrlCodingStrategy. This way,
>> even
>> >> >> session
>> >> >> relative url's will be SEO friendly.
>> >> >>
>> >> >> But you must be aware of one thing, it makes sense to make SEO
only
>> >> >> bookmarkable pages (stateless pages). It is meaningless to make
SEO
>> >> aware
>> >> >> session relative pages, because these will be shown as expired
when
>> >> >> somebody
>> >> >> else will use these links.
>> >> >>
>> >> >> Regards,
>> >> >> Alex Objelean
>> >> >>
>> >> >>
>> >> >> V. Jenks wrote:
>> >> >> >
>> >> >> > I'm working on some changes for our storefront (Wicket 1.4,
Java
>> EE
>> >> 5,
>> >> >> > Glassfish 2.1) based on some recommendations made to us by
an SEO
>> >> >> > consultant.  One of them is re-writing some of the URLs so
as to
>> >> have
>> >> >> them
>> >> >> > indexed by Google, etc.
>> >> >> >
>> >> >> > My concern is the Wicket WebSession that I use to pass around
an
>> >> >> instance
>> >> >> > of
>> >> >> > a stateful session bean.  If I redirect to a mounted bookmarkable
>> >> page
>> >> >> > when
>> >> >> > going through pages in the checkout process, vs redirecting
to a
>> new
>> >> >> > instances of the page class, will there be any adverse effects
on
>> >> the
>> >> >> > session?  Will customers experience a problem with their shopping
>> >> cart
>> >> >> > sessions?
>> >> >> >
>> >> >> > Thanks!
>> >> >> >
>> >> >> >
>> >> >>
>> >> >> --
>> >> >> View this message in context:
>> >> >>
>> >>
>> http://old.nabble.com/%22Pretty%22-URLs-and-sessions-tp26581608p26591380.html
>> >> >> Sent from the Wicket - User mailing list archive at Nabble.com.
>> >> >>
>> >> >>
>> >> >>
>> ---------------------------------------------------------------------
>> >> >> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> >> >> For additional commands, e-mail: users-help@wicket.apache.org
>> >> >>
>> >> >>
>> >> >
>> >> >
>> >>
>> >> --
>> >> View this message in context:
>> >>
>> http://old.nabble.com/%22Pretty%22-URLs-and-sessions-tp26581608p26833349.html
>> >> Sent from the Wicket - User mailing list archive at Nabble.com.
>> >>
>> >>
>> >> ---------------------------------------------------------------------
>> >> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> >> For additional commands, e-mail: users-help@wicket.apache.org
>> >>
>> >>
>> >
>> >
>>
>> --
>> View this message in context:
>> http://old.nabble.com/%22Pretty%22-URLs-and-sessions-tp26581608p26835013.html
>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>>
>>
> 
> 

-- 
View this message in context: http://old.nabble.com/%22Pretty%22-URLs-and-sessions-tp26581608p26835517.html
Sent from the Wicket - User mailing list archive at Nabble.com.


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


Mime
View raw message