1) Turn production mode to false in AppModule.java. You get much better
anymore. Commenting this out gives thes next problem:
successfully defeats tapestry live class reloading via mvn compile. This is
>
> 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 <
matt@...
> >>>>>> >
> >>>>>> 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-unsubscribe@...
> >>>>>> For additional commands, e-mail:
users-help@...
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>
> >>>>>
> >>>>
> >>>> --
> >>>> 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-unsubscribe@...
> >>>> For additional commands, e-mail:
users-help@...
> >>>
> >>>
> >>> ---------------------------------------------------------------------
> >>> To unsubscribe, e-mail:
users-unsubscribe@...
> >>> For additional commands, e-mail:
users-help@...
> >>>
> >>>
> >>>
> >>
> >> --
> >> 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-unsubscribe@...
> >> For additional commands, e-mail:
users-help@...
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail:
users-unsubscribe@...
> > For additional commands, e-mail:
users-help@...
> >
> >
> >
>
> --
> 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-unsubscribe@...
> For additional commands, e-mail:
users-help@...
>
>