• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Question on context().request().uri()
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Question on context().request().uri()


  • Subject: Re: Question on context().request().uri()
  • From: Chuck Hill <email@hidden>
  • Date: Thu, 1 Sep 2005 11:26:30 -0700

Hi Kieran,

I'm confused.

On Sep 1, 2005, at 11:01 AM, Kieran Kelleher wrote:

Yes, that helps. I have found that when switching between HTTP and HTTPS (my page subclass takes responsibility for this in appendToResponse based on a page flag), I need to use context.componentActionURL() (as per Marker's book) to build my full redirect URL for a component action request and use context.request().uri() (as per Chuck's book) to build my full redirect URL for direct action requests.

I'm not understand why that would be. Doing a redirect to context.request().uri() should repeat the previous action. Perhaps you don't want it to do that. Let's look at an example. The user is in HTTP, looking at PageA and clicks the Show Page B link which runs the showPageB() action method in PageA.java. This returns PageB which checks for HTTPS in its appendToResponse. Being in HTTP, it redirects to context.request().uri(). This causes the showPageB() action method in PageA.java to be called again, but this time via HTTPS. This returns PageB which checks for HTTPS in its appendToResponse. It is ON, so page generation proceeds normally.

Using context.componentActionURL(), this is what happens: The user is in HTTP, looking at PageA and clicks the Show Page B link which runs the showPageB() action method in PageA.java. This returns PageB which checks for HTTPS in its appendToResponse. Being in HTTP, it redirects to context.componentActionURL(). This causes the invokeAction method to be run on PageB. No action matches what is in the URL, so the default (nothing) happens and appendToResponse is called on PageB for the second time, but this time via HTTPS. It is ON, so page generation proceeds normally.


I found if I used context.request().uri() for HTTPS redirect URLs for both type of requests, the component action request landed me back on the same page.

I'm not really sure what you mean / were seeing. Does the description above explain what you were seeing?



And I don't want to use componentActionURL for direct action request redirects since that creates a session. So, I ended up using the request.requestHandlerKey() to determine how to construct the redirect URL and it works fine, but I needed to understand why.


Again, HTH.

Chuck


On Sep 1, 2005, at 1:14 PM, Chuck Hill wrote:



On Sep 1, 2005, at 10:03 AM, Kieran Kelleher wrote:


I have a question on understanding....

What is the significance/meaning/difference between

  context.request().uri()          and


This is the URL, requested by the browser, that caused the request which your code is currently processing. It came from the page that the user is currently viewing.




        context().componentActionURL()


This is the URL that will cause an action to be directed to the component currently being registered. Usually this is called in subcomponents / dynamic elements to generate the action URL to include in the response. This come from / will be in the page that the user will see once this request is returned to them.



When I log them in appendToResponse for a page generated from Component Action request, I get these values.....

371583 DEBUG [WorkerThread9] (PageWrapper, appendToResponse, 168) -
aContext.request().uri() = /cgi-bin/WebObjects/cheetah.woa/-52040/ wo/24OtRDbKizRKH6C2t7xjUM/4.0.9.1



4 = 5th request from this session
0.9.1 = the second part (1), of the 10th part (9) of the page (0).

0.9.1 indicates the exact node within the tree of elements which make up the page. Static HTML bits are elements within the tree too. This is how WO maps URLs to objects.


371585 DEBUG [WorkerThread9] (PageWrapper, appendToResponse, 169) -
aContext.componentActionURL() = /cgi-bin/WebObjects/ cheetah.woa/-52040/wo/24OtRDbKizRKH6C2t7xjUM/6.0



6 = 7th request from this session
0 = page

Does that help?


Chuck




.... and here is the context itself......
369855 DEBUG [WorkerThread9] (PageWrapper, appendToResponse, 122) -
WOComponent.context() = <er.extensions.ERXWOContext contextID=6 requestSenderID=0.9.1 elementID=0 sessionID=24OtRDbKizRKH6C2t7xjUM request=<er.extensions.ERXRequest (<er.extensions.ERXRequest httpVersion=HTTP/1.1 headers={remote_host = (127.0.0.1);
user-agent = (Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en- US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6);
keep-alive = (300);
document_root = (/Library/WebServer/Documents);
accept-charset = (ISO-8859-1,utf-8;q=0.7,*;q=0.7);
accept = (text/xml,application/xml,application/xhtml+xml,text/ html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5);
x-webobjects-adaptor-version = ("Apache");
server_name = (127.0.0.1);
referer = (http://127.0.0.1/cgi-bin/WebObjects/ cheetah.woa/-52040/wa/page? wosid=24OtRDbKizRKH6C2t7xjUM&page=WzdNC_ProductType);
remote_port = (60521);
remote_addr = (127.0.0.1);
x-webobjects-request-id = (43145a2300000150000000dd);
server_software = (Apache/1.3.28);
script_filename = (/cgi-bin/WebObjects/cheetah.woa/-52040/wo/ 24OtRDbKizRKH6C2t7xjUM/4.0.9.1);
x-webobjects-request-method = (GET);
accept-encoding = (gzip,deflate);
server_port = (80);
host = (127.0.0.1);
accept-language = (en-us,en;q=0.5);
connection = (close);
} content-length=0 cookies=null userInfo=null>) method=GET uri=/ cgi-bin/WebObjects/cheetah.woa/-52040/wo/24OtRDbKizRKH6C2t7xjUM/ 4.0.9.1 defaultFormValueEncoding=ISO8859_1 formValueEncodingDetectionEnabled=NO formValueEncoding=ISO8859_1 formValues={} > response=<com.webobjects.appserver.WOResponse (<com.webobjects.appserver.WOResponse httpVersion=HTTP/1.1 headers={content-type = ("text/html; charset=iso-8859-1");
} content-length=0 cookies=null userInfo=null>) status=200> pageElement=<WzdNC_Geography name: WzdNC_Geography subcomponents: null > pageComponent=<WzdNC_Geography name: WzdNC_Geography subcomponents: null > currentComponent=<PageWrapper name: PageWrapper subcomponents: null > url=/cgi-bin/WebObjects/ cheetah.woa/-52040 urlApplicationNumber=-52040 distributionEnabled=false pageChanged=true pageReplaced=false>


_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
40global-village.net


This email sent to email@hidden



--
Practical WebObjects - a book for intermediate WebObjects developers who want to increase their overall knowledge of WebObjects, or those who are trying to solve specific application development problems.
http://www.global-village.net/products/practical_webobjects









--
Practical WebObjects - a book for intermediate WebObjects developers who want to increase their overall knowledge of WebObjects, or those who are trying to solve specific application development problems.
http://www.global-village.net/products/practical_webobjects





_______________________________________________ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (email@hidden) Help/Unsubscribe/Update your Subscription: This email sent to email@hidden
References: 
 >Question on context().request().uri() (From: Kieran Kelleher <email@hidden>)
 >Re: Question on context().request().uri() (From: Chuck Hill <email@hidden>)
 >Re: Question on context().request().uri() (From: Kieran Kelleher <email@hidden>)

  • Prev by Date: Re: Design question with popup window.
  • Next by Date: Re: [ANN] New WebObjects and xCode Book Coming
  • Previous by thread: Re: Question on context().request().uri()
  • Next by thread: Re: Question on context().request().uri()
  • Index(es):
    • Date
    • Thread