You obviously left out some things for brevity, but I can't see "Person"
anywhere instantiated?

public class PersonForm {

@Persist
@Property //no need for accessors
private Person person;

Object onActivate()
{
   if(person==null)
     person = new Person();

   return null;
}

Object onSuccessFromPersonEditor()
{
....
....
return null;
}
}

And you also seem to not have an id for the beaneditform. with the above
code that would be:

<t:beaneditform t:id="personEditor" t:object="person"/>

Regards,
Otho

2008/12/11 mraible <m...@raibledesigns.com>

>
> I'm working on a simple CRUD example for Tapestry 5 (version 5.0.18) today
> in
> order to create the necessary FreeMarker templates for AppFuse's Maven
> Plugin. Here's my form class:
>
> package org.appfuse.webapp.pages;
>
> import org.apache.tapestry5.annotations.Persist;
> import org.apache.tapestry5.annotations.Property;
> import org.apache.tapestry5.ioc.annotations.Inject;
> import org.appfuse.model.Person;
>
> public class PersonForm {
>
>   @Persist
>   private Person person;
>
>   public Person getPerson() {
>       return person;
>   }
>
>   public void setPerson(Person person) {
>       this.person = person;
>   }
> }
>
> My PersonForm.tml:
>
> <t:layout title="message:personForm.title"
>       heading="message:personForm.heading" menu="literal:PersonMenu"
>   xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd";>
>   <body>
>       <h1>Create New Person</h1>
>
>       <t:beaneditform t:object="person"/>
>   </body>
> </t:layout>
>
> Pretty simple. The Person.java object is as follows:
>
> package org.appfuse.model;
>
> import javax.persistence.*;
>
> @Entity
> public class Person {
>   private Long id;
>   private String firstName;
>
>   public void setFirstName(String firstName) {
>       this.firstName = firstName;
>   }
>
>   public void setId(Long id) {
>       this.id = id;
>   }
>
>   public void setLastName(String lastName) {
>       this.lastName = lastName;
>   }
>
>   private String lastName;
>
>   @Id
>   @GeneratedValue(strategy = GenerationType.AUTO)
>   public Long getId() {
>       return this.id;
>   }
>
>   @Column(name = "first_name", length = 50)
>   public String getFirstName() {
>       return this.firstName;
>   }
>
>   @Column(name = "last_name", length = 50)
>   public String getLastName() {
>       return this.lastName;
>   }
>
>   public String toString() {
>       return firstName + ' ' + lastName;
>   }
> }
>
> When I access http://localhost:8080/personform, I get
> the following error:
>
> Render queue error in
> AfterRender[PersonForm:beaneditform.editor.loop]: Failure reading
> parameter 'validate' of component core/PropertyEditBlocks:numberfield:
> No object of type org.apache.tapestry5.services.PropertyEditContext is
> available from the Environment. Available types are
> org.apache.tapestry5.RenderSupport,
> org.apache.tapestry5.ValidationDecorator,
> org.apache.tapestry5.ValidationTracker,
> org.apache.tapestry5.internal.services.ClientBehaviorSupport,
> org.apache.tapestry5.internal.services.DocumentLinker,
> org.apache.tapestry5.services.BeanEditContext,
> org.apache.tapestry5.services.FormSupport,
> org.apache.tapestry5.services.Heartbeat.
>
> Any ideas?
>
> Thanks,
>
> Matt
> --
> View this message in context:
> http://www.nabble.com/BeanEditForm-Component-in-Tapestry-5-tp20964358p20964358.html
> Sent from the Tapestry - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>

Reply via email to