Re: "Pretty" URLs and sessions
Alex, this was a great help, thank you! On Thu, Dec 17, 2009 at 3:23 PM, Alex Objelean wrote: > > Though I didn't use it, there is HttpsRequestCycleProcessor (you should add > it in your Application) and @RequireHttps annotation (for each WebPage > which > must be accessed through SSL) which should make this work. > > Alex > > > V. Jenks wrote: > > > > Yes I know, I do this most of the time. However, I'm redirecting from > > http > > to https. When I wrote this app, this was what everyone was > recommending. > > Is there another way? > > > > On Thu, Dec 17, 2009 at 2:45 PM, Alex Objelean > > wrote: > > > >> > >> 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.(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 > >> > 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 i
Re: "Pretty" URLs and sessions
Though I didn't use it, there is HttpsRequestCycleProcessor (you should add it in your Application) and @RequireHttps annotation (for each WebPage which must be accessed through SSL) which should make this work. Alex V. Jenks wrote: > > Yes I know, I do this most of the time. However, I'm redirecting from > http > to https. When I wrote this app, this was what everyone was recommending. > Is there another way? > > On Thu, Dec 17, 2009 at 2:45 PM, Alex Objelean > wrote: > >> >> 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.(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 >> > 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'
Re: "Pretty" URLs and sessions
Yes I know, I do this most of the time. However, I'm redirecting from http to https. When I wrote this app, this was what everyone was recommending. Is there another way? On Thu, Dec 17, 2009 at 2:45 PM, Alex Objelean wrote: > > 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.(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 > > 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 > >> > 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 > >> >> ( > >> >> > >> > h
Re: "Pretty" URLs and sessions
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.(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 > 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 >> > 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
RE: "Pretty" URLs and sessions
> They're so wowed by GA, I doubt there's any turning back. Explain to your guys that GA is Google. If he is ok with Google knowing as much (or more) than you guys do about your own sales - then party on! Go GA! Also, you can track a lot more stuff than GA will let you since you know/own everything that goes on. Everything they clicked, how long they spent where, you can even track where their mouse was hovering! ;) - Alex R. -Original Message- From: VGJ [mailto:zambi...@gmail.com] Sent: Thursday, December 17, 2009 4:08 PM To: users@wicket.apache.org Subject: Re: "Pretty" URLs and sessions 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 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 > > 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.htm l > >> 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 > >> > >> > > > > > > -- > View this message in context: > http://old.nabble.com/%22Pretty%22-URLs-and-sessions-tp26581608p26833349.htm l > 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 > > - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: "Pretty" URLs and sessions
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.(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 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 > > 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
Re: "Pretty" URLs and sessions
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 > 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 >> > 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-unsubscr...@wicket.apache.org >> >> For additional commands, e-mail: users-h...@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-unsubscr...@wicket.apache.org >> For additional commands, e-mail: users-h...@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-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: "Pretty" URLs and sessions
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 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 > > 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-unsubscr...@wicket.apache.org > >> For additional commands, e-mail: users-h...@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-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > >
Re: "Pretty" URLs and sessions
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 > 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-unsubscr...@wicket.apache.org >> For additional commands, e-mail: users-h...@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-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
RE: "Pretty" URLs and sessions
V, What you are looking for can be addressed in 2 ways. GA gives you a value to add to the page's html: some javascript which "calls home" and reports URL it was called from. This will tell you which items customers are looking at: "item_id=2098" Using HybridUrlCodingStrategy (as per Alex O) will let GA "see" the "item_id=2098" or however you choose to encode urls (there are multiple strategies). If you tracked id of the item internally - wouldn't show up in URL in a consistent way. You ALSO could forget the GA and track this stuff far better in your own code. Cause then you could track 2000 other things that GA can't. Like if customer comes back a day later. It's not "new" interest. But with a login - you'll know more than GA possibly can. - Alex. -Original Message- From: VGJ [mailto:zambi...@gmail.com] Sent: Thursday, December 17, 2009 1:30 PM To: users@wicket.apache.org Subject: Re: "Pretty" URLs and sessions 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 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.htm l > 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 > > - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: "Pretty" URLs and sessions
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 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-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > >
Re: "Pretty" URLs and sessions
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-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org