Hi,
You are not missing anything.

Insert an onPrepare() with no arguments.
tapestry will not call onPrepare(Integer officeId) with null for officeId.

Cheers,
Dragan Sahpaski



On Mon, Jun 13, 2011 at 5:54 PM, Tony Nelson <tnel...@starpoint.com> wrote:

> I'm trying to create a simple form that will work for both Add and Edit.
>  I'm trying to use onPrepare to setup the database object and the code works
> fine for an existing object.  When I try to use the form with a new object
> (id = null) it appears that onPrepare isn't called, so I end up with null
> pointer exceptions trying to build the form.
>
> Here is my simple controller:
>
> package com.starpoint.helpdesk.pages.office;
>
> import com.starpoint.helpdesk.business.OfficeLogic;
> import com.starpoint.helpdesk.domain.Office;
> import com.sun.istack.internal.Nullable;
> import org.apache.tapestry5.annotations.Log;
> import org.apache.tapestry5.annotations.Persist;
> import org.apache.tapestry5.annotations.Property;
> import org.apache.tapestry5.ioc.annotations.Inject;
> import org.slf4j.Logger;
>
>
> /**
>  */
> public class EditOffice {
>
>    @Inject
>    private Logger logger;
>
>    @Inject
>    private OfficeLogic officeLogic;
>
>    @Persist
>    private Integer officeId;
>
>    @Property
>    private Office office;
>
>    public Integer getOfficeId() {
>        return officeId;
>    }
>
>    @Log
>    public void setOfficeId(@Nullable Integer officeId) {
>        this.officeId = officeId;
>    }
>
>    @Log
>    void onPrepare(Integer officeId) {
>        if (office == null) {
>            office = officeId == null ? new Office() :
> officeLogic.getOffice(officeId);
>        }
>    }
>    void onActivate(Integer officeId) {
>        this.officeId = officeId;
>    }
>
>    Integer onPassivate() {
>        return officeId;
>    }
>
>    public Object onSuccess() {
>        logger.info("**************: " + office.toString());
>        return this;
>    }
> }
>
>
> And my form:
>
> <html t:type="layout" title="helpdesk Index"
>      t:sidebarTitle="Current Time"
>      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd";
>      xmlns:p="tapestry:parameter">
>
> <t:form t:id="editOfficeForm" t:context="officeId">
>    <t:errors/>
>    <table>
>        <tr>
>            <td><t:label for="officeName">Office Name</t:label></td>
>            <td><t:textfield t:id="officeName"
> value="prop:office.officeName"></t:textfield></td>
>        </tr>
>
>        <tr>
>            <td colspan="2">
>                <t:submit t:id="saveOffice" class="button">Save
> Office</t:submit>
>            </td>
>        </tr>
>    </table>
>
> </t:form>
>
> </html>
>
> What am I missing?
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>

Reply via email to