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

Reply via email to