Correct, so the bulk of your tapestry code can deal with entities, not ids. On 3 Jul 2014 23:11, "Ilya Obshadko" <ilya.obsha...@gmail.com> wrote:
> That's Hibernate entity, so I don't think ValueEncoder is necessary with > tapestry-hibernate. > > > On Thu, Jul 3, 2014 at 11:28 PM, Lance Java <lance.j...@googlemail.com> > wrote: > > > If you contribute an appropriate ValueEncoder for Entity, you won't need > > onActivate() / onPassivate(). You can use @PageActivationContext instead. > > > > > > On 3 July 2014 06:11, Ilya Obshadko <ilya.obsha...@gmail.com> wrote: > > > > > Oops my bad. I always try to forget about onPassivate () > > > That should fix it, thanks! > > > > > > > > > On Thu, Jul 3, 2014 at 1:46 PM, Geoff Callender < > > > geoff.callender.jumpst...@gmail.com> wrote: > > > > > > > What's "t:ac"? In the POST's Form Data, "t:ac" is the key of the > field > > > > that carries the page's activation context. > > > > > > > > > > > > On 3 Jul 2014, at 12:41 pm, Geoff Callender < > > > > geoff.callender.jumpst...@gmail.com> wrote: > > > > > > > > > Not a bug. Form bubbles up its context in the PREPARE_FOR_SUBMIT > > event. > > > > Here's a typical way to deal with it: > > > > > > > > > > void onPrepareForSubmit(Long id) { > > > > > this.id = id; > > > > > entity = retrieveFromDatabase(id); > > > > > } > > > > > > > > > > What should you pass in the context? At a minimum I'd recommend > > passing > > > > all the parameters of its enclosing component. Then, in > > > > onPrepareForSubmit(...) you can restore the component's parameter > > values > > > > (like we restored this.id above) before proceeding. In this way a > > > > component can behave independently rather than depending on its page. > > > When > > > > components get deeply nested then this is essential. > > > > > > > > > > > > > > > If you want the page's onActivate(Long id) to be invoked, then > you'll > > > > need the *page's* context to include id, which you achieve by doing > > this > > > in > > > > the page: > > > > > > > > > > Long onPassivate() { > > > > > return id; > > > > > } > > > > > > > > > > I'm guessing your page doesn't do that. Before clicking submit, the > > > page > > > > URL would look like this... > > > > > > > > > > http://localhost:8080/application/page/12345 > > > > > > > > > > ...and, on submit, the Form Data would include: > > > > > > > > > > t:ac:12345 > > > > > > > > > > Geoff > > > > > > > > > > > > > > > On 3 Jul 2014, at 11:59 am, Ilya Obshadko <ilya.obsha...@gmail.com > > > > > > wrote: > > > > > > > > > >> I'm not sure if this is a bug or not. > > > > >> > > > > >> Here's a scenario: > > > > >> > > > > >> Page.java > > > > >> > > > > >> public class Page { > > > > >> @Property > > > > >> private Entity entity; > > > > >> > > > > >> void onActivate ( Long id ) { > > > > >> entity = retrieveFromDatabase ( id ); > > > > >> } > > > > >> > > > > >> } > > > > >> > > > > >> Page.tml: > > > > >> > > > > >> <t:mycomponent entity="entity"/> > > > > >> > > > > >> MyComponent.tml: > > > > >> > > > > >> <t:form p:context="entity.id"> > > > > >> ... > > > > >> </t:form> > > > > >> > > > > >> > > > > >> AJAX is NOT used. If I get it right, form context must be passed > to > > > > >> enclosing page during form submission. However it doesn't work and > > > > >> appropriate onActivate method is never called, although submission > > URL > > > > >> looks just like expected: > > > > >> http://localhost:8080/application/page.mycomponent.form/12345 > > > > >> > > > > >> Am I missing something here? I'm using 5.4-beta6 > > > > >> > > > > >> > > > > >> -- > > > > >> Ilya Obshadko > > > > > > > > > > > > > > > > > > > > > > -- > > > Ilya Obshadko > > > > > > > > > -- > Ilya Obshadko >