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
>
>

Reply via email to