On 26-May-06, at 10:02 AM, Dev WO wrote:
Hello David,the handling of the request seems to have an issue if you cannot get all the parameter.If this is not a bug and is intentional behavior, shouldn't WebObjects be able to restore the session and read the wosid in the URL?I'm quite surprised you cannot get wosid (or test) using formValueForKey... The example I have in mind is using the wosid, we are not manipulating it, but the application is using it and manage the session correctly, so I think there's something...unexpected.In performActionNamed(String name) when I call existingSession() on the URL with the escaped &, WO doesn't find the session. It returns null on existingSession() for a URL like this: .../wa/ReminderDA/refreshReminder? id=46&wosid=B6fPodDWHmwlDcUs54Uaj0However, even if I add a third parameter to the URL and use formValueForKey, it doesn't work. .../wa/ReminderDA/refreshReminder? id=46&test=hello&wosid=B6fPodDWHmwlDcUs54Uaj0formValueForKey works on id but doesn't work on test or wosid.You can do that of course, it is just something that could break sometime as it is just not HTML.If I remove the escape characters, existingSession() works and formValueForKey works properly.Do you mind sending your entire method so we can have a look at it?
This looks like the same issue I documented here: <http:// david.codeferous.com/?p=191> - this is *not* fixed in the latest WO 5.3.1(Xcode 2.3) release.
The problem, if I understand it correctly, is this:A URL on a page needs to conform to the (X)HTML spec and have '&'s encoded to '&'. However, the request, sent to the server should not. URLs embedded in a page are parsed by a web browser and the ampersand decoding happens for you (you can confirm this using tcpump or tcpflow if you wish).
URLs generated by context().directActionURLForActionNamed() have encoded ampersands. Which is what you would want if that URL is going to be used on a page. However, if you use them directly to make a request to the server (via WORedirect in my case, or in a Javascript - as it appears David is doing) you need to manually remove the ampersand encoding (because the browser is not going to do it for you).
So the bug shows up because of the multiple uses for context ().directActionURLForActionNamed(). Sometimes you need an encoded URL, sometimes you don't.
Xavier- David -----Original Message----- From: Dev WO [mailto:[EMAIL PROTECTED] Sent: Friday, May 26, 2006 5:26 AM To: Gary Teter Cc: David Haggerty; [email protected] Subject: Re: Problems with WOAction in WO 5.3.1 Hello, This is not a bug! the & must be escaped in & in a hyperlink, this is the (X)HTML specification. It was broken in 5.2.4 and corrected in 5.3.1 because it's the correct behavior. The remaining bug I know of is when using the href binding with parameters, it leads to &amp; in code which is incorrect, so it sort of a double escape. If you are using formValueForKey it correctly gets every parameters from the DA URL. Xavier Le 26 mai 06 à 00:07, Gary Teter a écrit :Yes, this was broken in 5.3.1, but apparently fixed in 5.3.1. That is, it was broken with the 5.3.1 that was introduced with (if I recall) a Mac OS X Server updated), and may be fixed with the 5.3.1 that was introduced with Xcode 2.3. (Perhaps Apple has exceeded its version number budget, and so all future WebObjects releases will also be 5.3.1.) The workaround is to write a method that calls WOContext's directActionURLForActionNamed() and manually munge the URL yourself, e.g., something like: String url = context().directActionURLForActionNamed ("refreshReminder", getRefreshQueryDictionary()); url = url.replaceAll("&", "&"); return url; On May 25, 2006, at 2:48 PM, David Haggerty wrote:We recently upgraded to 5.3.1 from 5.2.4 and are having problems withWOActionURL. We use WOActionURL for Ajax and the & is adding the HTML escape in 5.3.1 but never did this in 5.2.4. This is causing it to not find the session and the URL is then invalid. Any ideas? Is this a bug in 5.3.1? Thanks in advance, David 5.3.1: .../wa/org.yfu.ui.announcement.ReminderDA/refreshReminder? id=46002395450 30766980&wosid=B6fPodDWHmwlDcUs54Uaj0 5.2.4: .../wa/org.yfu.ui.announcement.ReminderDA/refreshReminder? id=46002395450 30766980&wosid=B6fPodDWHmwlDcUs54Uaj0 ActionURL1: WOActionURL { actionClass = "org.yfu.ui.announcement.ReminderDA"; directActionName = "refreshReminder"; queryDictionary = refreshQueryDictionary; } public NSDictionary getRefreshQueryDictionary(){return new NSDictionary(getReminderIterator().getId(), "id");}
-- ;david -- David LeBer Codeferous Software 'co-defer-ous' adj. producing or containing code site: http://www.codeferous.com blog: http://david.codeferous.com
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list ([email protected]) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to [email protected]
