That worked - thanks! Matt
Otho wrote: > > 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 >> >> > > -- View this message in context: http://www.nabble.com/Problem-using-BeanEditForm-with-a-POJO-tp23349016p23400496.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