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]