# [JSF] HTML aus JavaBean generieren



## raptor (6. Sep 2007)

Gibt es einen Weg, HTML aus einer JavaBean zu erstellen und dass dann irgendwie in die JSF Seite zu bringen?

Im Moment bastel ich mir eine Seite mittels <jsp:include ... /> zusammen. Jetzt möchte ich aber die Navigation nicht 'fix' haben, sondern irgendwie erzeugen. Sind da custom Tags der richtige Weg? Und wie kann ich es anstellen, dass ich in den eingebundenen Seiten auch <h:form> und untergeordnete Elemente verwenden kann?


----------



## ms (6. Sep 2007)

Reichen die JSTL-Tags nicht für dein dynamisches Menü?.

ms


----------



## raptor (6. Sep 2007)

Um ehrlich zu sein habe ich mir die noch gar nicht angeschaut. Habe mich bislang an JSF Tutorials gehalten die nur Elemente aus JSF core bzw. html drin hatten. Ich werde mir dann wohl erstmal die JSTL anschauen.

Danke @ ms.


----------



## raptor (6. Sep 2007)

Um ganz ehrlich zu sein verstehe ich es im Moment nicht so recht. Aber vielleicht muss ich da auch nur genauer rein schauen. Ich muss dazu sagen, dass ich aus der PHP Entwicklung komme und man dort ja viele Schweinereien machen kann 
Vielleicht habe ich schon grundlegend den falschen Ansatz gewählt. Um nicht auf jeder JSF Seite den gesamten HTML Code zu haben, habe ich z.B. den HTML Header in einer eigenen JSP Datei ausgelagert. Genauso im Moment auch das Haupt- und Untermenü. Diese sind zur Zeit statisch. Da habe ich auch so schon das Problem, dass ich da z.B. keine Tag-Elemente von JSF Core oder HTML benutzen kann. Und ann der Stelle möchte ich das am allerliebsten aus Java Code erstellen. (irgendwie habe ich wohl nur meinen ersten Post wiederholt... ein Ausdruck meiner momentanen Ahnungslosigkeit  )


----------



## orribl (6. Sep 2007)

Hi raptor,
schau dir doch mal facelets an, ist aehnlich wie smarty bei php...
Da kannst du dann auch jsf-seiten einbinden; 

MfG


----------



## raptor (10. Sep 2007)

Geht leider nicht. Wäre mir auch am liebsten...

Wenn ich in Java eine Methode schreibe die wie folgt aussieht:


```
public String getMainMenu() {
		String output = "<ul>";
		
		for (MenuItem item : menu ) {
			output += "[*]<a href=\""+item.getUrl()+"\">"+item.getName()+"</a>";
		}
		
		return output+"[/list]";
	}
```
Kann ich die in JSF Seiten in <hutput>-Tags verwenden. Allerdings wird dann aus < & usw. Gibt es da eine Möglichkeit das zu verhindern?


----------



## Guest (12. Sep 2007)

Autsch! Im Java-Code HTML unterbringen und andersrum ist nicht die gute Art.

Gib die Items als Collection heraus und iteriere in der JSP mit dem <c:forEach>-Tag.

Sonst: Für deinen Fall gibts die Variante, das einfach per Expression Language blanko an die passende Stelle zu schreiben, also ohne den <hutput>-Tag drumherum.


----------



## raptor (13. Sep 2007)

Anonymous hat gesagt.:
			
		

> Autsch! Im Java-Code HTML unterbringen und andersrum ist nicht die gute Art.


Ich weiß. Denn gerade das ist ja das Ziel von JSF (wenn ich es richtig verstanden habe).



			
				Anonymous hat gesagt.:
			
		

> Gib die Items als Collection heraus und iteriere in der JSP mit dem <c:forEach>-Tag.
> 
> Sonst: Für deinen Fall gibts die Variante, das einfach per Expression Language blanko an die passende Stelle zu schreiben, also ohne den <hutput>-Tag drumherum.


Ich werde beides mal ausprobieren, danke!


----------



## JimPanse (13. Sep 2007)

Hallo!

Also du hast genua zwei Möglickeiten:

1. Du verwendest ne fertige Lib, Bsp: von MyFaces Tomhawk, da gib es sowas schon fertig als JSF Tag.

2. Du baust dir ne Action-Klasse zusammen, Bsp:

...

//Methode 


```
public void processAction(ActionEvent event) throws AbortProcessingException {
        String id = event.getComponent().getId()

    if(id.equals("Mache was"){ //in diesem fall ist der id = submit
        Dann passiert etwas dynamisches in der Seite

    }
}
```
Seite: Entweder so oder 


```
<h:commandButton id="submit" value="#{msg.button}"
				styleClass="form-button">
			<f:actionListener type="de.pfad.MeineActionKlasse" />
	</h:commandButton>
```

direkt in deiner Bean


```
<h:commandButton id="submit" value="#{msg.button_suche}"
				styleClass="portlet-form-button">
				actionListe="'{Bean.processAction}" />
</h:commandButton>
```
Na dann mal viel Spaß (ist aber nicht schwer)
Gruß


----------

