It is really nice to be able to do input validation declarative for
the simple, and most common case, and in onValidate() programmatically
perform the more complex validation.
2007/1/29, Ted Steen <[EMAIL PROTECTED]>:
I read up on form validation and saw that onSuccess should be used for
this. So now it works fine, but there is still problems with the
@ApplicationState in the super class.
2007/1/29, Ted Steen <[EMAIL PROTECTED]>:
> @ComponentClass
> public abstract class CommonPengBasePage {
>
> @Inject("context:resources/images/bakis.gif")
> private Asset _background;
>
> @ApplicationState
> private PengUserDTO _identity;
>
> public Asset getBackgroundImage() {
> return _background;
> }
>
> public PengUserDTO getIdentity() {
> return _identity;
> }
>
> public void setIdentity(PengUserDTO identity) {
> _identity = identity;
> }
> }
>
> public abstract class PengBasePage extends CommonPengBasePage {
>
> @SetupRender
> public boolean checkForValidIdentity() {
>
> //todo check state flag instead when that is implemented
> if(getIdentity() != null) {
> return true;
> } else {
> return false; //todo something clever
> }
>
> }
> }
>
> //a page that needs an identity
> public class ShowCollective extends PengBasePage {
>
>
>
> }
>
> //the login page
> public class Start extends CommonPengBasePage {
>
> @Inject
> private UserService pengUserService;
>
> @Inject
> private Log log;
>
> @Inject
> private Messages messages;
>
> @Component
> private Form loginForm;
>
> private String email;
> private String password;
>
> public String getEmail() {
> return email;
> }
> public void setEmail(String email) {
> this.email = email;
> }
> public String getPassword() {
> return password;
> }
> public void setPassword(String password) {
> this.password = password;
> }
>
> @OnEvent(component="doLogin")
> public String handleLogin() {
>
> if(loginForm.isValid()) {
>
> PengUserDTO pengUser = pengUserService.login(email,
password);
>
> if (pengUser == null)
> {
>
loginForm.recordError(messages.get("login-error"));
> } else {
> setIdentity(pengUser);
> return "ShowCollective";
> }
> } else {
> log.info("Form is not valid...");
> }
> return null;
> }
>
> }
>
>
> This is a subset of my proof-of-concept-project, showing the "bug".
> Actually I have a question regarding the handleLogin() method in page Start.
> I have a Submit component with id doLogin (maybe not a very clever
> name...) and i use that component id in @OnEvent for the method
> handleLogin.
> When the login succeeds and I return "ShowCollective" tapestry says throws
this;
>
> java.lang.IllegalArgumentException
> Event 'selected' from net.keso.ted.peng5.pages.Start:doLogin received
> an event handler method return value of ShowCollective from
> net.keso.ted.peng5.pages.Start.handleLogin(). This type of event does
> not support return values from event handler methods.
>
> So my question is, how am I supposed to redirect/reroute to a
> different page after an event coming from a submit button?
>
> thanks
> /ted
> 2007/1/28, Howard Lewis Ship <[EMAIL PROTECTED]>:
> > Sounds like a bug to me. I have seen some oddities involving the user
> > of inner classes and fields that are removed (I believe it's actually
> > a Javassist bug) but this doesn't seem to fall into that. Any chance
> > of showing us the code?
> >
> > On 1/27/07, Ted Steen <[EMAIL PROTECTED]> wrote:
> > > All the involved classes are in the same package.
> > >
> > > 2007/1/27, Howard Lewis Ship <[EMAIL PROTECTED]>:
> > > > Very odd.
> > > >
> > > > The transformation does remove the _identity field, but since the
> > > > field is private, that should not matter. There are other
> > > > transformations that also remove fields.
> > > >
> > > > I don't have a test for this specific case, I'll have to add one.
> > > >
> > > > What package is the base class in? That affects what classes are
> > > > transformed, though it looks like the transformation is happening.
> > > >
> > > > @ComponentClass on a base class is sufficient.
> > > >
> > > > On 1/27/07, Ted Steen <[EMAIL PROTECTED]> wrote:
> > > > > Abstract class CommonBasePage is annotated with @ComponentClass and
> > > > > defines a field "_identity" which is annotated with @ApplicationState.
> > > > > get and set for the field is implemented in CommonBasePage.
> > > > > the abstract class BasePage extends CommonBasePage
> > > > >
> > > > > now, when I create a new page Main I let it extend from BasePage.
> > > > > but then I get
> > > > > java.lang.NoSuchFieldError: _identity at
> > > > >
net.keso.ted.peng5.pages.CommonPengBasePage.containingPageDidLoad(CommonPengBasePage.java)
> > > > > .
> > > > > .
> > > > > .
> > > > >
> > > > > Am I doing something wrong?
> > > > > Also, should I annotate the Main page with @ComponentClass or can I
> > > > > assume that it is inherited from CommonBasePage?
> > > > >
> > > > > --
> > > > > /ted
> > > > >
> > > > > ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > > >
> > > > >
> > > >
> > > >
> > > > --
> > > > Howard M. Lewis Ship
> > > > TWD Consulting, Inc.
> > > > Independent J2EE / Open-Source Java Consultant
> > > > Creator and PMC Chair, Apache Tapestry
> > > > Creator, Apache HiveMind
> > > >
> > > > Professional Tapestry training, mentoring, support
> > > > and project work. http://howardlewisship.com
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > >
> > > >
> > >
> > >
> > > --
> > > /ted
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, e-mail: [EMAIL PROTECTED]
> > >
> > >
> >
> >
> > --
> > Howard M. Lewis Ship
> > TWD Consulting, Inc.
> > Independent J2EE / Open-Source Java Consultant
> > Creator and PMC Chair, Apache Tapestry
> > Creator, Apache HiveMind
> >
> > Professional Tapestry training, mentoring, support
> > and project work. http://howardlewisship.com
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
>
> --
> /ted
>
--
/ted
--
/ted
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]