Hi, 1) Turn production mode to false in AppModule.java. You get much better exception reporting then.
The exception you mentioned is caused by: org.apache.tapestry5.internal.services.TransformationExceptionUnable to add new method public final void setFrom(java.lang.String) as it already exists. If you set the @Property annotation you don't write primitive setters anymore. Commenting this out gives thes next problem: org.apache.tapestry5.internal.services.RenderQueueExceptionRender queue error in BeginRender[Login:outputraw]: Failure reading parameter 'value' of component Login:outputraw: Embedded component(s) form are defined within component class com.company.webapp.components.UserForm (or a super-class of UserForm), but are not present in the component template (classpath:com/company/webapp/components/UserForm.tml). If you explicitly define a @Component in the class you need to use the implicit (variable name) id or assign a descriptive id. In UserForm.tml change <t:form> to <t:form t:id="form"> and it works. 2) Something in your setup, I suspect the aspectj compile stage, successfully defeats tapestry live class reloading via mvn compile. This is a nuisance you should look into when you got the time. Regards, Otho 2009/5/4 mraible <m...@raibledesigns.com> > > Should be fixed now. Sorry about that. > > Matt > > > Robert Zeigler wrote: > > > > Tried dl'ing and running and received the following error: > > [ERROR] BUILD ERROR > > [INFO] > > ------------------------------------------------------------------------ > > [INFO] Failed to resolve artifact. > > > > GroupId: org.appfuse.plugins > > ArtifactId: appfuse-maven-plugin > > Version: 2.1-SNAPSHOT > > > > Reason: Unable to download the artifact from any repository > > > > org.appfuse.plugins:appfuse-maven-plugin:pom:2.1-SNAPSHOT > > > > from the specified remote repositories: > > central (http://repo1.maven.org/maven2), > > appfuse (http://oss.sonatype.org/content/groups/appfuse) > > > > > > Robert > > > > On May 2, 2009, at 5/211:25 PM , mraible wrote: > > > >> > >> I'm using Tapestry 5.0.14. You can download the project from > >> http://static.raibledesigns.com/downloads/basic-tapestry.zip. > >> > >> Matt > >> > >> > >> Robert Zeigler wrote: > >>> > >>> Hi Matt, > >>> > >>> Hm, that's an odd exception. > >>> The way BeanEditForm works is to lookup an "editor block" for each > >>> property, based on the "datatype" for that property (datatype is > >>> determined by the DataTypeAnalyzer service; lookup of the block is > >>> the > >>> job of the BeanBlockSource service). The information needed for each > >>> of the editor blocks to function is stashed in a > >>> "PropertyEditContext", which is made available to the blocks by the > >>> BeanEditor component via the Enviromental service. Which is why I'm > >>> saying your exception looks weird: it's saying that the > >>> PropertyEditContext wasn't available from the environment. Since > >>> this > >>> presumably happens while rendering the bean editor, it's weird, > >>> because property edit context /should/ be available! > >>> > >>> The mailing list strips attachments; can you post the project > >>> elsewhere? > >>> Also, what version of t5? > >>> > >>> Robert > >>> > >>> On May 2, 2009, at 5/210:46 PM , mraible wrote: > >>> > >>>> > >>>> I was able to fix the problem by commenting out field.isRequired() > >>>> in the > >>>> following method: > >>>> > >>>> > >>>> public void insideLabel(Field field, Element labelElement) { > >>>> if (inError(field)) { > >>>> addErrorClassToCurrentElement("error"); > >>>> }/* > >>>> if (field.isRequired()) { > >>>> labelElement.raw(" *"); > >>>> }*/ > >>>> > >>>> } > >>>> > >>>> Is there a way to use similar logic and prevent the exception from > >>>> happening? > >>>> > >>>> Thanks, > >>>> > >>>> Matt > >>>> > >>>> > >>>> mraible wrote: > >>>>> > >>>>> 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-tp23349016p23352398.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 > >>> > >>> > >>> --------------------------------------------------------------------- > >>> 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-tp23349016p23352566.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 > > > > > > --------------------------------------------------------------------- > > 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-tp23349016p23371856.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 > >