here is the actual error An unexpected application exception has occurred.java.lang.RuntimeExceptionPage edit/Coach did not generate any markup when rendered. This could be because its template file could not be located, or because a render phase method in the page prevented rendering.
java/org.tynamo.examples.hibernatesecurity.pages.edit.CoachEdit.java resources/org.tynamo.examples.hibernatesecurity.pages.edit.CoachEdit.tml webapp/edit/CoachEdit.tml I tried locating the template in the two above places but it still does find it. according to tapestry docs, it is valid to locate pages beneath the pages dir and other folders beneath could a render phase method be tripping it up ? package org.tynamo.examples.hibernatesecurity.pages.edit; import org.apache.tapestry5.EventConstants; import org.apache.tapestry5.Link; import org.apache.tapestry5.annotations.CleanupRender; import org.apache.tapestry5.annotations.Log; import org.apache.tapestry5.annotations.OnEvent; import org.apache.tapestry5.annotations.Property; import org.apache.tapestry5.hibernate.annotations.CommitAfter; import org.apache.tapestry5.ioc.Messages; import org.apache.tapestry5.ioc.annotations.Inject; import org.apache.tapestry5.services.ContextValueEncoder; import org.apache.tapestry5.services.PageRenderLinkSource; import org.tynamo.examples.hibernatesecurity.model.Coach; import org.tynamo.examples.hibernatesecurity.pages.Show; import org.tynamo.routing.annotations.At; import org.tynamo.services.DescriptorService; import org.tynamo.services.PersistenceService; import org.tynamo.util.TynamoMessages; import org.tynamo.util.Utils; /** * Page for editing and updating objects. * * @note: * When extending this page for customization purposes, it's better to copy & paste code than trying to use inheritance. * */ @At(value="/{0}/{1}/edit", order = "before:Show") public class CoachEdit { @Inject private ContextValueEncoder contextValueEncoder; @Inject private Messages messages; @Inject private PersistenceService persistenceService; @Inject private DescriptorService descriptorService; @Inject private PageRenderLinkSource pageRenderLinkSource; @Property(write = false) private Class beanType = Coach.class; @Property private Object bean; @OnEvent(EventConstants.ACTIVATE) Object activate(Class clazz, String id) { if (clazz == null) return Utils.new404(messages); this.bean = contextValueEncoder.toValue(clazz, id); this.beanType = clazz; if (bean == null) return Utils.new404(messages); return null; } @CleanupRender void cleanup() { bean = null; beanType = null; } /** * This tells Tapestry to put type & id into the URL, making it bookmarkable. */ @OnEvent(EventConstants.PASSIVATE) Object[] passivate() { return new Object[]{beanType, bean}; } @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); } }