To make a long story short :-)
JSF Core can mean MyFaces IMPL or SUN RI, since JSF is a spec
(all <h:*** and <f:*** related stuff)
Tomahawk is a set of custom components, like Tobago and the ADF Faces donation
Reading myfaces.apache.org (and wiki.apache.org/myfaces) will help you
on some questions.
For a tabbed pane you can use MyFaces Tomahawk's component ([1]). the
example is "hard coded" as well. But you can use the binding attribute
to push the component itself to a backing bean. This will allow you
access to the component by hacking java code inside the backing bean.
Means you can add childrens with Java Code (aka tabs)
HTH,
Matthias
[1] http://www.irian.at/myfaces/tabbedPane.jsf
On 5/11/06, Scrut Inizer <[EMAIL PROTECTED]> wrote:
After working through some tutorials and documentations I ran into some
beginners questions while writing my own, little JSF application.
I would really appreciate it if you could take some time to give me some
hints because I am really lost. Reading the following text will probably
take the longest as I am sure you all know the answers to my newbie
questions off by heart. Here we go:
1. How do I create a tabbed pane and fill the tabs and the active pane with
dynamic links?
3. How do I associate a different parameter to each of those links?
3. How do I pass that parameter on to the Backing Bean method that is called
after clicking on a link?
4. How do I pass such a parameter to a method in a different Backing Bean?
5. Which component is most suitable for such a tabbed pane?
Thank you so much!
Scrut
--
Here is what I want to do:
I have a collection of music pieces and the associated metadata for each
piece is stored in one database table. In a second table I have multiple
classifications such as
Genre
Classical
Jazz
Acid Jazz
Latin Jazz
Rock
Region
Africa
America
South America
North America
Europe
Asia
Australia
Something like that. Each music piece is associated with each classification
tree. (Each music piece belongs to a Genre and comes from a different
region…)
Now I want a user to be able to find a list of music pieces by navigating
through any of those classification systems.
I want something like a tabbed pane where the tabs are filled with the roots
of those classification trees (in this example there are two tabs: Genre and
Region)
Let's assume the active tab is Genre. Then the content of the associated
pane is to be the list of the first level descendants of the root. (In this
example: Classical, Jazz, Rock)
Each item is to be a link so that when the user clicks on "Jazz", the pane
will be populated with "Acid Jazz" and "Latin Jazz".
But how do I do that?
1. What components (JSF Core, MyFaces, Tomahawk, Tobago, Sun UI…) should I
use?
2. How do I create the tabs dynamically? I mean: all examples I have seen so
far assume that one knows the number and names of the tabs – and hard-codes
each of them. But how do I do that dynamically? (If there is only 2 trees in
the database there will be only 2 tabs but if there are suddenly 3 trees
there will be 3 tabs and so on)
3. How do I create a dynamic list of links where each link carries a
different parameter (e.g. a unique ID)?
4. How do I pass that parameter on to the Backing Bean method that is
invoked by clicking on the link?
Is that even the way to do this?
My idea was: Let's assume, "Jazz" has primary key "2" in the database and
"Acid Jazz" has "3" and "Latin Jazz" has "4" and the database knows that 3
and 4 are children of 2 because each child holds its parent ID:
ITEM_ID NAME PARENT_ID SONG_ID
2 Jazz -- --
3 Acid Jazz 2 --
4 Latin Jazz 2 --
5 Song1 4 1
6 Song2 4 2
Now the user clicks on "Jazz" which calls the method "userClick()" within
the associated Backing Bean. Somehow that link carried the parameter "2"
which is now used by userClick() to ask the database "give me all children
of '2'". The database will return a list with the two items "Acid Jazz" and
"Latin Jazz". So the method fills those two items into the managed
properties of the Backing Bean and returns the outcome "menupage" which is
defined in faces-config.xml to call the menupage.jsp (menupage calls
menupage), thereby filling the active pane with those two items "Acid Jazz"
and "Latin Jazz".
Now let's assume that the user clicks on "Latin Jazz" so userClick() asks
the database "give me all children of 4". The resultset returns items 5 and
6 which are links to two songs. This is evident because the attribute
SONG_ID contains an entry.
Again, the returned outcome is "menupage" so the pane is populated with
"Song1" and "Song2".
If the user clicks on "Song1", userClick() receives the parameter "5" and
notices that this item links to a Song with the ID 1.
So instead of returning the outcome "menupage" again, it returns "songpage"
and passes the parameter "1" to that page which then looks up the metadata
of the song with the ID "1" in the database and displays the content.
But how do I propagate that parameter "1" to the songpage or its backing
bean?
Can I even make the backing bean do a database call BEFORE the songpage is
rendered? Because when the user clicks on "Song1" I want to invoke a method
which requests the associated data from the database and displays it on the
"songpage".
Is this even the way to go?
Or how should I tackle this problem?
How do I do that?
Thanks so much!
--
Matthias Wessendorf
Aechterhoek 18
48282 Emsdetten
http://jroller.com/page/mwessendorf
mwessendorf-at-gmail-dot-com