BasePage doesn't have an emailAddress property. You need to make sure Tapestry knows how to find your page class.
-----Original Message----- From: Ken nashua [mailto:[EMAIL PROTECTED] Sent: Friday, October 13, 2006 8:18 AM To: [email protected] Subject: BindException whoas... Tap-4.1 help please (thanks) Guys, I am whipping up a simple Login page... no *.page files just annotations. The page displays and the validators are nice. If someone could bail me out here I would be greatful. The Login.html quits on trying to render the OGNL for emailAddress. OGNL is having trouble getting to this object (Person object persisted and created during onrender) I am kinda blue in the face... Do you see anything in my code preventing the html from retrieving this property? What am I missing? Thanks so much. Here is the exception... org.apache.tapestry.BindingException Unable to read OGNL expression '<parsed OGNL expression>' of [EMAIL PROTECTED]: $BasePage_4.emailAddress binding: ExpressionBinding[Login emailAddress] Thanks in advance -------- Login.html code follows ---- <html jwcid="@Shell" title="message:page.title"> <body jwcid="@Body"> <h1><span jwcid="@Insert" value="message:page.title"/></h1> <DEFANGED_form jwcid="[EMAIL PROTECTED]" success="listener:onFormSubmit" cancel="listener:onFormCancel" clientValidationEnabled="ognl:true" > <table border="0"> <tr> <td> <span jwcid="@Insert" value="message:label.emailAddress">EmailAddress:</span> </td> <td><input jwcid="[EMAIL PROTECTED]" value="ognl:emailAddress" validators="validators:required" displayName="message:label.emailAddress" size="40" /></td> </tr> <tr> <td> <span jwcid="@Insert" value="message:label.password">Password:</span> </td> <td><input jwcid="[EMAIL PROTECTED]" value="password" validators="validators:required" displayName="message:label.password" size="40"/></td> </tr> <tr> <td/> <td> <input type="submit" jwcid="[EMAIL PROTECTED]" label="message:label.login" /> <input type="submit" jwcid="[EMAIL PROTECTED]" label="message:label.cancel" onclick="DEFANGED_javascript:this.form.events.cancel();" /> </td> </tr> <tr> <td/> <td> <span jwcid="@Insert" value="message:label.rememberMe"/> <input jwcid="[EMAIL PROTECTED]" value="rememberMe"/> </td> </tr> </table> </form> <p><a href="#" jwcid="@PageLink" page="Home">Home</a></p> </body> </html> -------- Login.java ----- package proto; import java.rmi.RemoteException; import javax.security.auth.login.LoginException; import org.apache.tapestry.IRequestCycle; import org.apache.tapestry.annotations.Bean; import org.apache.tapestry.annotations.Component; import org.apache.tapestry.annotations.InjectComponent; import org.apache.tapestry.annotations.InjectObject; import org.apache.tapestry.annotations.InjectState; import org.apache.tapestry.annotations.InjectPage; import org.apache.tapestry.annotations.Meta; import org.apache.tapestry.annotations.Persist; import org.apache.tapestry.callback.ICallback; import org.apache.tapestry.event.PageBeginRenderListener; import org.apache.tapestry.event.PageEvent; import org.apache.tapestry.form.IFormComponent; import org.apache.tapestry.form.TextField; import org.apache.tapestry.html.BasePage; import org.apache.tapestry.services.CookieSource; import org.apache.tapestry.valid.*; import org.apache.tapestry.valid.IValidationDelegate; import org.apache.tapestry.valid.ValidationDelegate; @Meta("anonymous-access=true") public abstract class Login extends BasePage implements PageBeginRenderListener { @Persist public abstract Person getPerson(); public abstract void setPerson(Person p); @Bean public abstract ValidationDelegate getDelegate(); @InjectPage("Home") public abstract Home getHomePage(); @InjectPage("Login") public abstract Login getLoginPage(); public Home onFormSubmit() { Person person = Persons.getKnownPersons().getPerson( getEmailAddress().toString(), getPassword().toString()); return getHomePage(); } @Component(type = "TextField", id = "emailAddress", bindings = { "value = ognl:person.emailAddress", "displayName = message:label.emailAddress", "validators = required" }) public abstract TextField getEmailAddressComponent(); public abstract String getEmailAddress(); public abstract void setEmailAddress(String emailAddress); @Component(type = "TextField", id = "password", bindings = { "value = ognl:person.password", "displayName = message:label.password", "validators = required,minLength=6,maxLength=16" }) public abstract TextField getPasswordComponent(); public abstract String getPassword(); public abstract void setPassword(String password); @Component(type = "Checkbox", id = "rememberMe", bindings = { "value = ognl:rememberMe", "displayName = message:label.rememberMe" }) public abstract boolean rememberMe(); public Home login(IRequestCycle cycle) { String emailAddress = getEmailAddress().toString(); String password = getPassword().toString(); StringBuffer sb = new StringBuffer(emailAddress); String validPassword = sb.reverse().toString(); if (password.equals(validPassword)) cycle.activate("listener"); getCookieSource().writeCookieValue(COOKIE_NAME, getEmailAddress().toString(), COOKIE_MAX_AGE); cycle.forgetPage(getPageName()); return getHomePage(); } private static final String COOKIE_NAME = "Login.emailAddress"; private static final int COOKIE_MAX_AGE = 60 * 60 * 24 * 7; @InjectObject("infrastructure:cookieSource") public abstract CookieSource getCookieSource(); public void pageBeginRender(PageEvent event) { if (getPerson() == null) { System.out.println("creating new person"); Person p = new Person(); p.setEmailAddress("[EMAIL PROTECTED]"); p.setPassword("[EMAIL PROTECTED]"); setPerson(p); } if ("".equals(getPerson().getEmailAddress())) getCookieSource().readCookieValue(COOKIE_NAME); } public String onFormCancel() { // setEmailAddress(""); return "Home"; } } --------- here is the whole exception ------ [ +/- ] Exception: Unable to read OGNL expression '<parsed OGNL expression>' of [EMAIL PROTECTED]: $BasePage_4.emailAddress org.apache.tapestry.BindingException Unable to read OGNL expression '<parsed OGNL expression>' of [EMAIL PROTECTED]: $BasePage_4.emailAddress binding: ExpressionBinding[Login emailAddress] location: context:/Login.html, line 16 11 <tr> 12 <td> 13 <span jwcid="@Insert" value="message:label.emailAddress">EmailAddress:</span> 14 </td> 15 16 <td><input jwcid="[EMAIL PROTECTED]" value="ognl:emailAddress" 17 validators="validators:required" displayName="message:label.emailAddress" size="40" /></td> 18 </tr> 19 <tr> 20 <td> 21 <span jwcid="@Insert" value="message:label.password">Password:</span> [ +/- ] Exception: Unable to read OGNL expression '<parsed OGNL expression>' of [EMAIL PROTECTED]: $BasePage_4.emailAddress org.apache.hivemind.ApplicationRuntimeException Unable to read OGNL expression '<parsed OGNL expression>' of [EMAIL PROTECTED]: $BasePage_4.emailAddress component: [EMAIL PROTECTED] location: context:/WEB-INF/Login.page, line 5, column 21 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE page-specification PUBLIC 3 "-//Apache Software Foundation//Tapestry Specification 4.0//EN" 4 "http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd"> 5 <page-specification> 6 7 </page-specification> [ +/- ] Exception: $BasePage_4.emailAddress --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
