Stephen,

Where did you try putting @Persist? The error you got sounds like you put
it on the property you annotated with @Component. Try putting it on your
pin number property, not pinNumberField

Can we see your tml file?

I normally use @InjectComponent rather than @Component
On Jul 25, 2015 9:30 AM, "Stephen Nutbrown" <steves...@gmail.com> wrote:

> Hi,
>
> I have a simple form with one field which takes in a code. This code is to
> identify guests at our wedding, the security of it isn't really paramount.
>
> We would like to be able to have users enter the code into the form, OR
> scan a QR code. The QR code points to an address, e.g
>
> www.foo.com/1234
>
> The onActivate method picks up that 1234 and gets an "Invite" object if one
> exists with that code. If not, I would like to record an error on the form,
> the code looks like this:
>
> @SessionState(create = false)
> Invitation invite;
>
> @Component(id = "pinform")
> private Form form;
>
> @Component(id = "pinNumber")
> private TextField pinNumberField;
>
> public Object onActivate(Invitation invite) {
> this.invite = invite;
> if(invite != null){
> return Wedding.class;
> }else{
> form.recordError(pinNumberField, "Sorry, this number is not valid.");
> return null;
> }
> }
>
> Although this does pick up the wedding and the "else" is fired for an
> incorrect pin, the recorded error does not show.
>
> My onValidate method (for if someone actually submits the form rather than
> scanning a QR code) works and looks like this:
>
> public void onValidateFromPinForm() {
> invite = dao.find(Invitation.class, pinNumber);
> if (invite == null) {
> form.recordError(pinNumberField, "Sorry, this number is not valid.");
> }
> }
>
> public Object onSuccessFromPinForm() {
> return Wedding.class;
> }
>
> How can I persist the error on the form from the onActivate method? I have
> tried using @Persist, this throws an exception:
>
> Field form of class com.wedding.steveandstacey.pages.Index can not be
> claimed by @org.apache.tapestry5.annotations.Persist as it is already
> claimed by @org.apache.tapestry5.annotations.Component.
>
> Any ideas?
>
> Thanks,
> Steve
>

Reply via email to