The clean solution was the modeling of just the page object and page activation 
context... and tapestry does the rest.

so that sums up a custom edit page

public class CoachEdit
{
    @Inject
    private ContextValueEncoder contextValueEncoder;

    @Inject
    private Messages messages;

    @Inject
    private PersistenceService persistenceService;

    @Inject
    private PageRenderLinkSource pageRenderLinkSource;

    @Property(write = false)
    private Class beanType = Coach.class;

    @Property
    @PageActivationContext
    private Coach bean;

    @Property
    private BeanModel beanModel;

    @Inject
    private BeanModelSource beanModelSource;

    void onActivate(Coach bean)
    {
        this.bean = bean;
        beanModel = beanModelSource.createEditModel(beanType, messages);
    }

    Coach onPassivate()
    {
        return bean;
    }

    @CleanupRender
    void cleanup()
    {
        bean = null;
        beanType = null;
    }

    @Log
    @CommitAfter
    @OnEvent(EventConstants.SUCCESS)
    Link success()
    {
        persistenceService.save(bean);
        return back();
    }

    @OnEvent("cancel")
    Link back()
    {
        return pageRenderLinkSource.createPageRenderLinkWithContext(Show.class, 
beanType, bean);
    }

    public String getListAllLinkMessage()
    {
        return TynamoMessages.listAll(messages, beanType);
    }

    public String getTitle()
    {
        return TynamoMessages.edit(messages, beanType);
    }
}



                                          

Reply via email to