The jsessionid coming before the username is the problem, I think.
Whatever builds the url needs to make sure it's inserted before the
;jsessionid part. Are you building the URL yourself? If so, it shouldn't
be too much work to fix.
-Filip
On 2008-05-08 12:56, lebenski wrote:
Oh I just noticed that you said you found the problem.... is it because the
jsessionid is getting passed on the URL or something else?
Sven Homburg wrote:
after a debug session, a find the reason for this behavior.
i try to find out a soloution for that
2008/5/8 lebenski <[EMAIL PROTECTED]>:
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]
--
with regards
Sven Homburg
http://tapestry5-components.googlecode.com
-----
best regards
Sven
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]