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