I am curious that if it is really needed that a context path just always must end with "/"
If that is the case then that patch is not correct because it is very funny that when the servlet path = ""
that you add a "/" to the context path.. That is strange.

If the context path just always have to end with "/" then the patch should be a few lines up.

johan


On 9/9/06, Jean-Baptiste Quenot <[EMAIL PROTECTED]> wrote:
Hello Wicket Developers,

I discovered a  serious problem in Wicket 1.2 while  my Wicket app
went in production.

Previously I was using ""  (root context) in the servlet container
configuration,  and servlet  mapping  "/*" in   web.xml.  It  works
great.  You  may be surprised,  but yes,  it works.  I  don't have
static resources  to serve, so  I didn't  need to do  the "/app/*"
servlet mapping that is recommended in the documentation.

But for production we had the  bad idea to change the context path
to "/myapp"  (non-root context), still with  servlet mapping "/*".
And in this configuration, Wicket ceased to work properly.

Note: I'm  not  talking about  servlet  mapping  "/", which  is  a
different story, I know using that will not work with Wicket.  I'm
only talking about servlet mapping "/*".

The  symptom is  that  submitting forms  using  the "POST"  method
leaded to strange  errors that revealed that all  form values were
lost.  Looking at the page  source, <form>'s action attribute gave
me a hint, it was written:

<form action="" wicket:id="registerForm" method="post" id="registerForm">
                   ^^^
Instead of:

<form action="" wicket:id="registerForm" method="post" id="registerForm">
                   ^^^

In  this case,  the servlet  engine will  redirect from  /myapp to
/myapp/  to force  using a  canonical URL,  and that's  why I  was
loosing the form values after POST.

The good news is that a one-line patch to WebRequestCodingStrategy
is sufficient  to fix the  wrong Wicket behaviour  (see attached).
As you  know the URL prefix  is computed only at  the first Wicket
request, and  when I  request http://myserver/myapp/ "  the servlet
container returns  "" (empty string) as  getServletPath().  So the
empty string shall not  be a no-go for appending a  "/" at the end
of the URL.

I  tested the  patch only  with Jetty  5, but  if you  feel it  is
necessary, I can take the time to test on other servlet containers
too.

Thanks for reading up to the end!
--
     Jean-Baptiste Quenot
aka  John Banana Qwerty
http://caraldi.com/jbq/


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642

_______________________________________________
Wicket-develop mailing list
Wicket-develop@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-develop




-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Wicket-develop mailing list
Wicket-develop@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-develop

Reply via email to