# dynamische Navigaiton und JSF (facelets)



## eskimo328 (21. Jan 2008)

Hi,

wie realisiere ich eine Navigation unter Verwendung von JSF?

Hab mich mittlerweile mit JSF und Facelets auseinandergesetzt. Doch ich brauche irgendwie einen Ansatz.
In php hab ich webseiten meistens folgendermaßen umgesetzt:

Es gibt eine index.php, welche einen header, eine navigation und den content includet.
Der content wird dabei dynamsich eingebunden. Also wenn man ein link anklickt (z.b. index.php?page=test1), dann wird eben der inhalt von test1 eingebunden.

Wie realisier ich soetwas mit JSF?


----------



## freez (22. Jan 2008)

schau dir mal facelets an. damit kannst du ein Template erstellen und dann brauchst du nur noch Seiten erstellen, in denen der dynamische Inhalt abgebildet wird. Diese Seiten kannst du dann direkt aufrufen. Ist bis jetzt die schönste Methode die ich kenne.


----------



## maki (22. Jan 2008)

> Hab mich mittlerweile mit JSF und Facelets auseinandergesetzt.


Ach wirklich?

Dynamisches Templating ist so ziemlich das erste Beispiel in fast jedem Facelets Tutorial/Einführung.


----------



## Guest (22. Jan 2008)

also ist es dann in etwa so der richtige ansatz?


```
//template.xhtml
...
<body>
    <div><ui:insert name="header">header inhalt</ui:insert></div>
    <div><ui:insert name="menu">menu inhalt (navigation)</ui:insert></div>
    <div><ui:insert name="content">dynamsicher inhalt</ui:insert></div>
</body>
...
```


```
//inhalt1.xhtml
...
<body>
<ui:define name="content">
    irgendein inhalt
</ui:define>
</body>
...

//inhalt2.xhtml
...
<body>
<ui:define name="content">
   irgendein anderer inhalt
</ui:define>
</body>
...
```


```
//menu.xhtml
...
<body>
<ui:define name="menu">
    <h:commandLink action="goToInhalt1">
    <h:commandLink action="goToInhalt2">
</ui:define>
</body>
...
```

wenn dies so in der art richtig ist, wie werden dann die navigation rules definiert?


----------



## eskimo328 (23. Jan 2008)

der gast war übrigens ich (vergessen einzuloggen) ...

also wenn ich des so aufbau wie ich es oben erläutert habe und ich beispielsweise 3 Links habe und von jeder seite zu jeder gelangen will, dann brauche ich 6 navigation-rules. bei 4 Seiten, bräuchte ich dann schon 12 navigation-rules.

muss man das wirklich so machen oder geht das auch anders?


----------



## freez (23. Jan 2008)

Hm, habe das Wort Facelets im ersten Post glatt überlesen 

Wenn ich dich richtig verstanden habe, hat dein Menü eine feste Struktur. Dann lasse im Template das <ui insert für das menü weg und generiere direkte Links auf deine Seiten mit <hutputLink> an dieser Stelle.

Also:

```
//template.xhtml
...
<body>
    <div><ui:insert name="header">header inhalt</ui:insert></div>
    <div>
         <h:outputLink value="./inhalt1.jsf">
	     <h:outputText value="Link zu Inhalt 1" />
	 </h:outputLink>
    </div>
    <div><ui:insert name="content">dynamsicher inhalt</ui:insert></div>
</body>
...
```

Dafür brauchst du auch keine Navigation Rules.

Also in der Template.xhtml hinterlegst du alles, was fest auf jeder Seite das selbe ist. Ich habe es noch nicht probiert, aber ich kann mir vorstellen, das du mit commandLinks und den NavigationRules auch in Template.xhtml arbeiten kannst.

Axo, die menu.xhtml würde ich in dem Fall einfach weglassen.


----------



## eskimo328 (30. Jan 2008)

aso, haja klar, hast recht. hätte ich auch selebr drauf kommen können. ind dem fall is das thema erledigt


----------

