Em Wed, 04 Mar 2009 13:52:22 -0300, Luther Baker <lutherba...@gmail.com> escreveu:

If Block Edit isn't a page and it isn't a component ... is there a
predictable way to initialize it each time it is requested?
In my case, I have a Hibernate entity ... with a reference @ManyToOne - to another entity. It is this child entity that has an edit block associated
with it. When I go to EDIT the parent entity, I need to load all possible
children entities into a select drop down and pick from them.

Forget about events in this case.
Do it the easy way: you have to pass a SelectModel to the Select component though the model parameter.
Something like:

<select t:type="Select" t:model="entityModel" ...>

Just do your initialization inside the getEntityModel() method:

SelectModel getEntityModel() {
        // fetch children entities
        // populate SelectModel
        return selectModel;
}

Therefore, I need to refresh that edit block drop down each time it
displays. Since I registered this block with the App Module - I don't
explicitly reference it in the actual page displaying the BeanEditForm. Does that make sense? The BeanEditForm is instantiating the edit block behind the scenes.

You're right. You don't need to use a lifecycle event to refresh the Select component because the model is requested everytime it (Select) is rendered.

So, I separated them - so I literally have a getModel and a getEncoder. Now, if I can't depend on events with this app block - I could put the query in one of these two - and I can see one hit before the other - but is that
order guaranteed?

Your encoder shouldn't depend on a pre-fetched list. Just fetch the encoded object in your encoder.

On that note, pageAttached is currently firing in my EditBlock.java class.

It is expected. Your page is activated when BeanEditForm gets a component from it.

Were you implying (in an early post) that I should depend on that in all
cases?

I don't even know what you mean here, but the answer is no. :)
That I'm just lucky here? I didn't quite understand this comment:

since literally, void pageAttached() is declared and implemented in the
BlockEdit.java - and not literally the page. "declared it inside a page"
confuses me.

BlockEdit is a page that is not used as a regular page. Regular pages are requested though HTTP. BlockEdit is used just to declare blocks.

Again: stop understanding lifecycle events in BlockEdit for a while and try to learn them on regular pages and components.

--
Thiago H. de Paula Figueiredo
Independent Java consultant, developer, and instructor
http://www.arsmachina.com.br/thiago

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to