I tried using your hint by changing my template to the following: <t:layout title="message:personDetail.title" heading="message:personDetail.heading" menu="literal:PersonMenu" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
<t:messagebanner t:id="message" type="type"/> <form t:id="personForm" clientValidation="true"> <t:errors/> <div class="t-beaneditor"> <t:beaneditor t:id="person" object="person" exclude="id"/> <div class="t-beaneditor-row" style="text-align: center"> <input type="submit" id="save" value="message:button.save"/> <input t:type="submit" t:id="delete" id="delete" value="message:button.delete"/> <input t:type="submit" t:id="cancel" id="cancel" value="message:button.cancel"/> </div> </div> </form> <script type="text/javascript"> Form.focusFirstElement($("personForm")); </script> </t:layout> Unfortunately, I still get the same error when trying to view this page: [exec] ERROR [btpool0-3] PersonForm.run(78) | Render queue error in AfterRender[PersonForm:person.loop]: Failure reading parameter 'validate' of component core/PropertyEditBlocks:datefield: 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.services.FormSupport, org.apache.tapestry5.services.Heartbeat. [exec] org.apache.tapestry5.ioc.internal.util.TapestryException: Failure reading parameter 'validate' of component core/PropertyEditBlocks:datefield: 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.services.FormSupport, org.apache.tapestry5.services.Heartbeat. [at classpath:org/apache/tapestry5/corelib/components/BeanEditor.tml, line 3, column 47] [exec] at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:909) [exec] at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$200(ComponentPageElementImpl.java:50) [exec] at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$6.render(ComponentPageElementImpl.java:189) [exec] at org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:68) [exec] at org.apache.tapestry5.internal.services.PageRenderQueueImpl.render(PageRenderQueueImpl.java:108) [exec] at $PageRenderQueue_12104869ca2.render($PageRenderQueue_12104869ca2.java) [exec] at $PageRenderQueue_12104869c9b.render($PageRenderQueue_12104869c9b.java) [exec] at org.apache.tapestry5.services.TapestryModule$15.renderMarkup(TapestryModule.java:1128) [exec] at com.company.webapp.services.AppModule$1.renderMarkup(AppModule.java:138) Here is my PersonForm.java class: package com.company.webapp.pages; import org.apache.tapestry5.ioc.annotations.Inject; import org.apache.tapestry5.annotations.Component; import org.apache.tapestry5.annotations.InjectPage; import org.apache.tapestry5.annotations.Property; import org.apache.tapestry5.annotations.Persist; import org.apache.tapestry5.annotations.Service; import org.apache.tapestry5.corelib.components.EventLink; import org.apache.tapestry5.corelib.components.Form; import org.apache.tapestry5.PersistenceConstants; import org.appfuse.service.GenericManager; import com.company.model.Person; import org.slf4j.Logger; import java.util.List; public class PersonForm extends BasePage { @Inject private Logger log; @Inject @Service("personManager") private GenericManager<Person, Long> personManager; @Persist @Property private Person person; public Person getPerson() { return person; } /** * Allows setting person object from another class (i.e. PersonList) * * @param person an initialized instance */ public void setPerson(Person person) { this.person = person; } @InjectPage private PersonList personList; @Component(id = "personForm") private Form form; private boolean cancel; private boolean delete; void onValidateForm() { if (!delete && !cancel) { // manually validate required fields or annotate the Person object /*if (foo.getProperty() == null || user.getProperty().trim().equals("")) { form.recordError("Property is a required field."); }*/ } } void onActivate(Long id) { if (id != null) { person = personManager.get(id); } } Object onSuccess() { if (delete) return onDelete(); if (cancel) return onCancel(); log.debug("Saving person..."); boolean isNew = (getPerson().getId() == null); personManager.save(person); String key = (isNew) ? "person.added" : "person.updated"; if (isNew) { personList.addInfo(key, true); return personList; } else { addInfo(key, true); return this; } } void onSelectedFromDelete() { log.debug("Deleting person..."); delete = true; } void onSelectedFromCancel() { log.debug("Cancelling form..."); cancel = true; } Object onDelete() { personManager.remove(person.getId()); personList.addInfo("person.deleted", true); return personList; } Object onCancel() { return personList; } } I've attached my project which you should be able to run with "mvn jetty:run -Ph2". To reproduce, go to http://localhost:8080/personform and login with admin/admin. Thanks, Matt Thiago H. de Paula Figueiredo wrote: > > Em Sat, 02 May 2009 15:31:15 -0300, mraible <m...@raibledesigns.com> > escreveu: > >> I have the a Person.java object that I'm trying to use the BeanEditForm >> component with. It has no Tapestry annotations in it. Is it possible to >> use the BeanEditForm component with it? > > Yes. By the way, I've never used any Tapestry annotation in my POJOs. > >> <t:layout title="message:personDetail.title" >> heading="message:personDetail.heading" >> menu="literal:PersonMenu" >> xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"> >> >> <t:beaneditform object="person" id="personForm" exclude="id"> >> <t:parameter name="buttons"> > > You're trying to override the edition block of a non-existent BeanModel > property. Try adding add="buttons" to the BeanEditForm. > > Hint: instead of using BeanEditForm in this case, use a Form, an Errors > and a BeanEditor. You'll have complete control on how to add the submit > input (and any other thing you need). BeanEditForm = Form + Errors + > BeanEditor + submit input. > > -- > Thiago H. de Paula Figueiredo > Independent Java consultant, developer, and instructor > http://www.arsmachina.com.br/thiago > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > For additional commands, e-mail: users-h...@tapestry.apache.org > > > -- View this message in context: http://www.nabble.com/Problem-using-BeanEditForm-with-a-POJO-tp23349016p23352378.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