Yeah that sounds exactly like the problem i'm getting.

FYI here is my initial request (onchange of username field) after deleting
cookies:

URL=http://localhost:8080/home.homepage.registerwidget.registerbasicwidget.registerbasic_username:change;jsessionid=1d4snmum7f5cy/tesusername

Second request:

URL=http://localhost:8080/home.homepage.registerwidget.registerbasicwidget.registerbasic_username:change/tesusername

It appears the jsessionid only gets sent on the URL on the first request
(which breaks).  However it gets sent in the cookie header both times.  The
last bit after the slash is the value of the user name field.


Sven Homburg wrote:
> 
> i tested it here in my demo app.
> if i delete the session cookie the the onevent result is empty
> even though i refresh the page !?!?
> 
> 2008/5/8 Sven Homburg <[EMAIL PROTECTED]>:
> 
>> is there the same behavior if the restart the browser?
>>
>>
>> 2008/5/8 lebenski <[EMAIL PROTECTED]>:
>>
>> >
>> > for real testing i think its better to delete the cookie and refresh
>> the
>> > page
>> > before you initiate the ajax request cycle.
>> >
>> > This is exactly what i'm doing.  I've also tried this from a fresh,
>> > non-dev
>> > machine.  I hit my server without doing any shenanigans with deleting
>> > cookies and I get the same issue %-|.
>> >
>> >
>> > Sven Homburg wrote:
>> > >
>> > > thats not correct,
>> > > the session id ommited by the servlet by every
>> > > request to the browser
>> > >
>> > > so if the user starts the browser
>> > > and request the www.blabla.com/servletcontext/login or whatever
>> > > the servlet container response the session id
>> > >
>> > > if you delete the cookie or remove the session id from url
>> > > the server cant handle the ajax request (not sure for that but sounds
>> > > logical for me)
>> > >
>> > > for real testing i think its better to delete the cookie and refresh
>> > the
>> > > page
>> > > before you initiate the ajax request cycle.
>> > >
>> > > 2008/5/8 lebenski <[EMAIL PROTECTED]>:
>> > >
>> > >>
>> > >> I'm replicating the state in which a new user will hit the site,
>> they
>> > >> won't
>> > >> have any of the cookies set by Tapestry.
>> > >>
>> > >>
>> > >> Sven Homburg wrote:
>> > >> >
>> > >> > why do you delete the cookies ?
>> > >> >
>> > >> > 2008/5/8 lebenski <[EMAIL PROTECTED]>:
>> > >> >
>> > >> >>
>> > >> >> Hi guys,
>> > >> >>
>> > >> >> Ok i've got an urgent problem.  I'm using tapestry to develop a
>> > web
>> > >> app,
>> > >> >> which I have to present tomorrow to some very important people!
>> > >> >>
>> > >> >> I've got a very frustrating problem.  I will try to explain it as
>> > >> clearly
>> > >> >> as
>> > >> >> possible.
>> > >> >>
>> > >> >> I'm using the t5components/OnEvent Mixin to call back to Tapestry
>> > >> >> 'onChange'
>> > >> >> of a textfield.
>> > >> >>
>> > >> >> TML:
>> > >> >>
>> > >> >>  <t:form t:id="registerBasicForm" t:class="gamesysForm"
>> > >> >> zone="registerBasicZone">
>> > >> >> ....
>> > >> >>                            <t:label for="registerbasic_userName">
>> > >> >>                                User Name:
>> > >> >>                            </t:label>
>> > >> >>                            <t:textfield
>> > t:id="registerbasic_userName"
>> > >> >> t:value="userName"
>> > >> >> event="change" onfocus="showFieldHint('4-16
>> > >> >> characters');showFieldError('registerbasic_userName');"/>
>> > >> >>
>> > >> >> ....
>> > >> >> </t:form>
>> > >> >>
>> > >> >> Page Class:
>> > >> >>
>> > >> >> @Component(id = "registerbasic_userName", parameters = {
>> > >> "event=change",
>> > >> >>
>> > >> >> "onCompleteCallback=checkForServerValidationErrors"
>> > >> >> })
>> > >> >>        @Mixins("t5components/OnEvent")
>> > >> >>        private TextField userNameField;
>> > >> >>
>> > >> >> ...
>> > >> >>
>> > >> >>        @OnEvent(component = "registerbasic_userName", value =
>> > >> "change")
>> > >> >>        public JSONObject onChangeFromUserName(String value) {
>> > >> >>                System.out.println("onChangeFromUserName");
>> > >> >>                JSONObject json = new JSONObject();
>> > >> >>                Boolean userNameExists = false;
>> > >> >>
>> > >> >>                Pattern p =
>> > >> >> Pattern.compile(messages.get("alphanumeric-regex"));
>> > >> >>                Matcher m = p.matcher(value);
>> > >> >>                boolean validUserName = m.find();
>> > >> >>
>> > >> >>                if (validUserName) {
>> > >> >>                        try {
>> > >> >>                                userNameExists =
>> > >> >> hydraService.userNameExists(value);
>> > >> >>                        } catch (ServiceFaultException x) {
>> > >> >>                                logger.error("----fault : " +
>> > >> >> x.getFault().getMessage());
>> > >> >>                        } catch (ServiceProblemException x) {
>> > >> >>                                logger.error("----problem:" + x);
>> > >> >>                        }
>> > >> >>
>> > >> >>                        if (userNameExists) {
>> > >> >>                                json.put("error", "true");
>> > >> >>                                json
>> > >> >>                                                .append("message",
>> > >> >> "Username " + value
>> > >> >>                                                                +
>> "
>> > is
>> > >> >> taken");
>> > >> >>                        } else {
>> > >> >>                                json.put("error", "false");
>> > >> >>                                json.append("message", "");
>> > >> >>                        }
>> > >> >>
>> > >> >>                } else {
>> > >> >>                        json.put("error", "true");
>> > >> >>                        json.append("message", "Field contains
>> > invalid
>> > >> >> characters");
>> > >> >>                }
>> > >> >>
>> > >> >>                json.append("submitid", "submitRegisterBasic");
>> > >> >>                json.append("field", "registerbasic_userName");
>> > >> >>                System.out.println(json.get("error") + " " +
>> > >> >> json.get("field") + " "
>> > >> >>                                + json.get("message"));
>> > >> >>
>> > >> >>                return json;
>> > >> >>        }
>> > >> >>
>> > >> >> Javascript:
>> > >> >>
>> > >> >>        function checkForServerValidationErrors(response){
>> > >> >>
>> > >> >>                var json = response.evalJSON();
>> > >> >>                var elementId = json.field.toString();
>> > >> >>
>> > >> >>                //This MUST be done first
>> > >> >>                performTypeValidation(elementId);
>> > >> >>
>> > >> >>            if (json!=null && json.error == 'true' &&
>> > >> >> formErrors[elementId]==null)
>> > >> >> {
>> > >> >>
>> >  addFormValidationError(elementId,json.message);
>> > >> >>            }
>> > >> >>
>> > >> >>
>> > >> >>  processValidationErrors(elementId,json.submitid.toString());
>> > >> >>        }
>> > >> >>
>> > >> >> So, what happens is, when the user types a value into 'userName',
>> > and
>> > >> >> exits
>> > >> >> the field (onChange seems to act like onBlur), it calls back to
>> > >> Tapestry
>> > >> >> which executes the onChangeFromUserName(String value) method to
>> > check
>> > >> if
>> > >> >> the
>> > >> >> username exists in the database.  This then calls back to the
>> > >> javascript
>> > >> >> function (defined in the Component annotation) with a JSON
>> object.
>> > >> The
>> > >> >> javascript is used for client side validation/presentational
>> > stuff.
>> > >> >>
>> > >> >> This all works fine under normal conditions.  HOWEVER, when I
>> > clear my
>> > >> >> cookies and do the same action (type a value into 'username' and
>> > tab
>> > >> >> out),
>> > >> >> i
>> > >> >> get a javascript error 'json.field has no properties'.  The
>> server
>> > >> side
>> > >> >> method (onChangeFromUserName) isn't getting called (I can tell
>> > because
>> > >> it
>> > >> >> doesnt hit System.out.println("onChangeFromUserName");), BUT it
>> is
>> > >> >> calling
>> > >> >> back to the javascript function.  Rightly so, the javascript is
>> > >> >> complaining
>> > >> >> because the JSON object hasn't been passed in.
>> > >> >>
>> > >> >> 2 cookies are getting set, JSESSIONID and UTRACK, and they do get
>> > sent
>> > >> >> both
>> > >> >> on the initial request (right after i've cleared my cookies) and
>> > the
>> > >> >> request
>> > >> >> after.  But for some reason, i'm not hitting the server method on
>> > the
>> > >> >> initial request.
>> > >> >>
>> > >> >> I have used tamper data to analyse both requests and they appear
>> > to be
>> > >> >> identical.  Both cookies are getting sent, all the headers are
>> > >> identical.
>> > >> >>
>> > >> >> I am at a real loss and starting to panic about this.  I'm
>> > starting to
>> > >> >> think
>> > >> >> that Tapestry needs a request to properly set up the session,
>> > before
>> > >> you
>> > >> >> can
>> > >> >> actually call back to it, but this is only a hunch.
>> > >> >>
>> > >> >> I really need to get this sorted, if you have any ideas then
>> > please
>> > >> help!
>> > >> >> --
>> > >> >> View this message in context:
>> > >> >>
>> > >>
>> >
>> http://www.nabble.com/T5%3A-Urgent-Problem.-After-clearing-cookies-communication-between-client-and-tapestry-breaks-on-first-request-tp17123771p17123771.html
>> > >> >> Sent from the Tapestry - User mailing list archive at Nabble.com.
>> > >> >>
>> > >> >>
>> > >> >>
>> > ---------------------------------------------------------------------
>> > >> >> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> > >> >> For additional commands, e-mail: [EMAIL PROTECTED]
>> > >> >>
>> > >> >>
>> > >> >
>> > >> >
>> > >> > --
>> > >> > with regards
>> > >> > Sven Homburg
>> > >> > http://tapestry5-components.googlecode.com
>> > >> >
>> > >> >
>> > >> > -----
>> > >> > best regards
>> > >> > Sven
>> > >> >
>> > >>
>> > >> --
>> > >> View this message in context:
>> > >>
>> >
>> http://www.nabble.com/T5%3A-Urgent-Problem.-After-clearing-cookies-communication-between-client-and-tapestry-breaks-on-first-request-tp17123771p17123963.html
>> > >> Sent from the Tapestry - User mailing list archive at Nabble.com.
>> > >>
>> > >>
>> > >>
>> ---------------------------------------------------------------------
>> > >> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> > >> For additional commands, e-mail: [EMAIL PROTECTED]
>> > >>
>> > >>
>> > >
>> > >
>> > > --
>> > > with regards
>> > > Sven Homburg
>> > > http://tapestry5-components.googlecode.com
>> > >
>> > >
>> > > -----
>> > > best regards
>> > > Sven
>> > >
>> >
>> > --
>> > View this message in context:
>> >
>> http://www.nabble.com/T5%3A-Urgent-Problem.-After-clearing-cookies-communication-between-client-and-tapestry-breaks-on-first-request-tp17123771p17124134.html
>> > Sent from the Tapestry - User mailing list archive at Nabble.com.
>> >
>> >
>> > ---------------------------------------------------------------------
>> > To unsubscribe, e-mail: [EMAIL PROTECTED]
>> > For additional commands, e-mail: [EMAIL PROTECTED]
>> >
>> >
>>
>>
>> --
>> with regards
>> Sven Homburg
>> http://tapestry5-components.googlecode.com
>>
> 
> 
> 
> -- 
> with regards
> Sven Homburg
> http://tapestry5-components.googlecode.com
> 
> 
> -----
> best regards
> Sven
> 

-- 
View this message in context: 
http://www.nabble.com/T5%3A-Urgent-Problem.-After-clearing-cookies-communication-between-client-and-tapestry-breaks-on-first-request-tp17123771p17124356.html
Sent from the Tapestry - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to