You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by smallufo <sm...@gmail.com> on 2009/06/06 21:49:03 UTC
[Bug 1.3.6] Inconsistent RequestUtils.toAbsolutePath()
This is my code :
String s1 =
RequestUtils.toAbsolutePath(getRequestCycle().urlFor(CurrentPage.class ,
pps).toString());
System.out.println("s1 = " + s1);
Link link = new AjaxFallbackLink("link")
{
@Override
public void onClick(AjaxRequestTarget target)
{
final String s2 =
RequestUtils.toAbsolutePath(getRequestCycle().urlFor(CurrentPage.class ,
pps).toString());
System.out.println("s2 = " + s2);
}
};
This is the result :
s1 = http://foo.bar:8080/app/CurrentPage
s2 = CurrentPage/foo/bar/para/meters
String s1 is what I need , it has "http://foo.bar:8080/app/" in the head of
the string.
But why s2 don't have host and context name (app) in the head ?
It is inconsistent ....
Is it possible to make it consistent with s1 ?
Re: [Bug 1.3.6] Inconsistent RequestUtils.toAbsolutePath()
Posted by smallufo <sm...@funp.com>.
I don't know if this is related to WICKET-1599 :
https://issues.apache.org/jira/browse/WICKET-1599
2009/6/7 smallufo <sm...@gmail.com>
> This is my code :
>
> String s1 =
> RequestUtils.toAbsolutePath(getRequestCycle().urlFor(CurrentPage.class ,
> pps).toString());
> System.out.println("s1 = " + s1);
>
> Link link = new AjaxFallbackLink("link")
> {
> @Override
> public void onClick(AjaxRequestTarget target)
> {
> final String s2 =
> RequestUtils.toAbsolutePath(getRequestCycle().urlFor(CurrentPage.class ,
> pps).toString());
> System.out.println("s2 = " + s2);
> }
> };
>
> This is the result :
>
> s1 = http://foo.bar:8080/app/CurrentPage
> s2 = CurrentPage/foo/bar/para/meters
>
> String s1 is what I need , it has "http://foo.bar:8080/app/" in the head
> of the string.
> But why s2 don't have host and context name (app) in the head ?
> It is inconsistent ....
> Is it possible to make it consistent with s1 ?
>
>
>
Re: [Bug 1.3.6] Inconsistent RequestUtils.toAbsolutePath()
Posted by smallufo <sm...@gmail.com>.
I've attached a quickstart code , including error case , to WICKET-2312
https://issues.apache.org/jira/browse/WICKET-2312
I think the problem may come from bookmarkablePage parsing parameters...
The "CurrentPage" is mounted to "/CurrentPage" by
mountBookmarkablePage("/CurrentPage" , CurrentPage.class);
Test steps :
Step 1:
user browser to link to http://foo.bar:8080/quickstart/app/CurrentPage
outer = http://foo.bar:8080/quickstart/app/CurrentPage
inner = http://foo.bar:8080/quickstart/app/CurrentPage
both are correct.
But ...
Step 2:
Open browser to connect to :
http://foo.bar:8080/quickstart/app/CurrentPage/key/value
outer = http://foo.bar:8080/quickstart/app/CurrentPage/key/value/
inner = http://foo.bar:8080/CurrentPage/key/value/
"outer" is correct , but "inner" is wrong !
"inner" lacks of context("quickstart") and path("app") here.
Re: [Bug 1.3.6] Inconsistent RequestUtils.toAbsolutePath()
Posted by Johan Compagner <jc...@gmail.com>.
please attach a failing test case
On Sun, Jun 7, 2009 at 21:16, smallufo <sm...@funp.com> wrote:
> 2009/6/8 Johan Compagner <jc...@gmail.com>
>
> > that it doesnt give you the hostname/port is ofcourse a bug....
>
>
>
> I've submitted this bug to JIRA :
> https://issues.apache.org/jira/browse/WICKET-2312
>
Re: [Bug 1.3.6] Inconsistent RequestUtils.toAbsolutePath()
Posted by smallufo <sm...@funp.com>.
2009/6/8 Johan Compagner <jc...@gmail.com>
> that it doesnt give you the hostname/port is ofcourse a bug....
I've submitted this bug to JIRA :
https://issues.apache.org/jira/browse/WICKET-2312
Re: [Bug 1.3.6] Inconsistent RequestUtils.toAbsolutePath()
Posted by Johan Compagner <jc...@gmail.com>.
that it doesnt give you the hostname/port is ofcourse a bug....
print out these variables:
getRequestCycle().urlFor(CurrentPage.class ,pps).toString()
I think that one time it will give you just the url
and one time
../.././CurrentPage
i guess that is your problem but you need to debug a bit more why it gives
you that ../../xxxx
On Sun, Jun 7, 2009 at 20:14, smallufo <sm...@funp.com> wrote:
> Is there a plan to make behavior of RequestUtils.toAbsolutePath
> (inside/outside AJAX) identical ?
>
> If no , the only way to get the "correct" absolute URL in the AJAX
> onClick()
> is pre-appending host name / port / context name ...
> I think it is so cumbersome....
>
>
> 2009/6/8 Martin Makundi <ma...@koodaripalvelut.com>
>
> > The problem is that when you have a bookmarkable page with parameters,
> > the url looks like this:
> >
> > http://www.mydomain.com/myapp/MyPage/param1/value1/param2/value2
> >
> > The parameters are not part of the url path, but the "toAbsolutePath"
> > code assumes them to be.
> >
> > It would be better if it would adapt to the used url encoding and
> > strip page parameters.
> >
> > **
> > Martin
> >
>
Re: [Bug 1.3.6] Inconsistent RequestUtils.toAbsolutePath()
Posted by smallufo <sm...@funp.com>.
Is there a plan to make behavior of RequestUtils.toAbsolutePath
(inside/outside AJAX) identical ?
If no , the only way to get the "correct" absolute URL in the AJAX onClick()
is pre-appending host name / port / context name ...
I think it is so cumbersome....
2009/6/8 Martin Makundi <ma...@koodaripalvelut.com>
> The problem is that when you have a bookmarkable page with parameters,
> the url looks like this:
>
> http://www.mydomain.com/myapp/MyPage/param1/value1/param2/value2
>
> The parameters are not part of the url path, but the "toAbsolutePath"
> code assumes them to be.
>
> It would be better if it would adapt to the used url encoding and
> strip page parameters.
>
> **
> Martin
>
Re: [Bug 1.3.6] Inconsistent RequestUtils.toAbsolutePath()
Posted by Martin Makundi <ma...@koodaripalvelut.com>.
The problem is that when you have a bookmarkable page with parameters,
the url looks like this:
http://www.mydomain.com/myapp/MyPage/param1/value1/param2/value2
The parameters are not part of the url path, but the "toAbsolutePath"
code assumes them to be.
It would be better if it would adapt to the used url encoding and
strip page parameters.
**
Martin
2009/6/7 Johan Compagner <jc...@gmail.com>:
> No it is just the request uri and the request uri of the ajax call will
> always be
>
> http://foo.bar:8080/app/?xxxxxx=yyyyy
>
>
> so that is correct.
>
> And looking at the code you also can see that that last piece CurrentPage is
> stripped out (as it should) in the make to absolute path code
>
> Just Debug it
>
>
>
>
> On Sun, Jun 7, 2009 at 19:03, smallufo <sm...@funp.com> wrote:
>
>> 2009/6/7 Johan Compagner <jc...@gmail.com>
>>
>> > >
>> > >
>> > >
>> > >
>> > > a1 = http://foo.bar:8080/app/CurrentPage
>> > > s1 = http://foo.bar:8080/app/CurrentPage
>> > >
>> > > a2 = http://foo.bar:8080/app/
>> > > s2 = http://CurrentPage/ <http://currentpage/> <http://currentpage/>
>> > >
>> > >
>> > > a1 , s1 are correct ,
>> > > a2 , s2 are totally wrong.
>> > >
>> >
>> >
>> >
>> > a1 , s1 en a2 are all correct.
>> >
>> > but why s2 is a result when a2 is the input for that toAbsolutePath is
>> > weird.
>>
>>
>> Why a2 is correct ?
>> I think a2 should be identical to a1 (and s1) ...
>>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
Re: [Bug 1.3.6] Inconsistent RequestUtils.toAbsolutePath()
Posted by Johan Compagner <jc...@gmail.com>.
No it is just the request uri and the request uri of the ajax call will
always be
http://foo.bar:8080/app/?xxxxxx=yyyyy
so that is correct.
And looking at the code you also can see that that last piece CurrentPage is
stripped out (as it should) in the make to absolute path code
Just Debug it
On Sun, Jun 7, 2009 at 19:03, smallufo <sm...@funp.com> wrote:
> 2009/6/7 Johan Compagner <jc...@gmail.com>
>
> > >
> > >
> > >
> > >
> > > a1 = http://foo.bar:8080/app/CurrentPage
> > > s1 = http://foo.bar:8080/app/CurrentPage
> > >
> > > a2 = http://foo.bar:8080/app/
> > > s2 = http://CurrentPage/ <http://currentpage/> <http://currentpage/>
> > >
> > >
> > > a1 , s1 are correct ,
> > > a2 , s2 are totally wrong.
> > >
> >
> >
> >
> > a1 , s1 en a2 are all correct.
> >
> > but why s2 is a result when a2 is the input for that toAbsolutePath is
> > weird.
>
>
> Why a2 is correct ?
> I think a2 should be identical to a1 (and s1) ...
>
Re: [Bug 1.3.6] Inconsistent RequestUtils.toAbsolutePath()
Posted by smallufo <sm...@funp.com>.
2009/6/7 Johan Compagner <jc...@gmail.com>
> >
> >
> >
> >
> > a1 = http://foo.bar:8080/app/CurrentPage
> > s1 = http://foo.bar:8080/app/CurrentPage
> >
> > a2 = http://foo.bar:8080/app/
> > s2 = http://CurrentPage/ <http://currentpage/>
> >
> >
> > a1 , s1 are correct ,
> > a2 , s2 are totally wrong.
> >
>
>
>
> a1 , s1 en a2 are all correct.
>
> but why s2 is a result when a2 is the input for that toAbsolutePath is
> weird.
Why a2 is correct ?
I think a2 should be identical to a1 (and s1) ...
Re: [Bug 1.3.6] Inconsistent RequestUtils.toAbsolutePath()
Posted by Johan Compagner <jc...@gmail.com>.
>
>
>
>
> a1 = http://foo.bar:8080/app/CurrentPage
> s1 = http://foo.bar:8080/app/CurrentPage
>
> a2 = http://foo.bar:8080/app/
> s2 = http://CurrentPage/ <http://currentpage/>
>
>
> a1 , s1 are correct ,
> a2 , s2 are totally wrong.
>
a1 , s1 en a2 are all correct.
but why s2 is a result when a2 is the input for that toAbsolutePath is
weird.
Because quickly looking at the code it should just doe a2 + relativePath to
the CurrentPage == s1...
Jus debug it once and go into that method
*
final
* StringBuffer result;
*if* (requestPath.endsWith("/"))
{
result =
*new* StringBuffer(requestPath);
}
*else*
{
// Remove everything after last slash (but not slash itself)
result =
*new* StringBuffer(requestPath.substring(0, requestPath.lastIndexOf('/') +
1));
}
thats the code and a1 goes into the else and a2 goes into the if.. But why
would that result in s2.
Re: [Bug 1.3.6] Inconsistent RequestUtils.toAbsolutePath()
Posted by smallufo <sm...@funp.com>.
2009/6/7 Johan Compagner <jc...@gmail.com>
> can you debug and see what this returns for both situations?
>
>
> ((WebRequest)RequestCycle.*get*().getRequest()).getHttpServletRequest()
> .getRequestURL().toString()
>
ok , here is my test :
String a1 =
((WebRequest)RequestCycle.get().getRequest()).getHttpServletRequest().getRequestURL().toString();
System.out.println("a1 = " + a1);
String s1 =
RequestUtils.toAbsolutePath(getRequestCycle().urlFor(CurrentPage.class ,
pps).toString());
System.out.println("s1 = " + s1);
Link link = new AjaxFallbackLink("link")
{
@Override
public void onClick(AjaxRequestTarget target)
{
String a2 =
((WebRequest)RequestCycle.get().getRequest()).getHttpServletRequest().getRequestURL().toString();
System.out.println("a2 = " + a2);
final String s2 =
RequestUtils.toAbsolutePath(getRequestCycle().urlFor(CurrentPage.class ,
pps).toString());
System.out.println("s2 = " + s2);
}
};
a1 = http://foo.bar:8080/app/CurrentPage
s1 = http://foo.bar:8080/app/CurrentPage
a2 = http://foo.bar:8080/app/
s2 = http://CurrentPage/
a1 , s1 are correct ,
a2 , s2 are totally wrong.
Re: [Bug 1.3.6] Inconsistent RequestUtils.toAbsolutePath()
Posted by Johan Compagner <jc...@gmail.com>.
can you debug and see what this returns for both situations?
((WebRequest)RequestCycle.*get*().getRequest()).getHttpServletRequest()
.getRequestURL().toString()
On Sat, Jun 6, 2009 at 21:49, smallufo <sm...@gmail.com> wrote:
> This is my code :
>
> String s1 =
> RequestUtils.toAbsolutePath(getRequestCycle().urlFor(CurrentPage.class ,
> pps).toString());
> System.out.println("s1 = " + s1);
>
> Link link = new AjaxFallbackLink("link")
> {
> @Override
> public void onClick(AjaxRequestTarget target)
> {
> final String s2 =
> RequestUtils.toAbsolutePath(getRequestCycle().urlFor(CurrentPage.class ,
> pps).toString());
> System.out.println("s2 = " + s2);
> }
> };
>
> This is the result :
>
> s1 = http://foo.bar:8080/app/CurrentPage
> s2 <http://foo.bar:8080/app/CurrentPages2> =
> CurrentPage/foo/bar/para/meters
>
> String s1 is what I need , it has "http://foo.bar:8080/app/" in the head
> of
> the string.
> But why s2 don't have host and context name (app) in the head ?
> It is inconsistent ....
> Is it possible to make it consistent with s1 ?
>