# Java Code in JSF



## Samson_Miller (25. Feb 2009)

Hallo,

ich lese Einträge aus der Datenbank aus und lasse die Liste mit den Einträgen in einer JSF-Seite anzeigen, das klappt auch ganz gut soweit. Die Einträge bestehen nur aus Strings. Jetzt möchte ich, wenn die Länge des Strings größer als 5 ist das ein Bild angezeigt wird und wenn die Länge kleiner als 5 ist dann soll kein Bild angezeigt werden.

Habe ich in der JSF-Seite die Möglichkeit per if-else-Abfrage herauszufinden ob die Länge des Strings kleiner oder größer als 5 ist?

Nach dem Motto:

```
<%
	String name= ((Bean)Item).getName();
        if(name.length() > 5) {
%>
    <img src"../bild.jpg" />
<%
       }
%>
```

Mir ist klar, dass das so nicht funktioniert. Aber wie müsste das Code-Beispiel aussehen?


----------



## robsc (11. Mrz 2009)

Du könntest eine eigene Komponente entwickeln, welches wahlweise Text oder Images anzeigt.

<asdfutputTextOrImage displayImage="true" image="pfad_zum_bild" text="text" />

Und displayImage setzt du halt irgendwie über eine Bean-Property.

Eventuell gibt es auch eine Komponente die sowas schon macht.


----------



## gex (12. Mrz 2009)

hi

du solltest die jstl functions einbinden können, dannach kannst du sowas einsetzen:


```
<h:graphicImage value="../bild.jpg" rendered="#{fn:length(item.name) > 5}" />
```
oder umgekehrt

```
<h:graphicImage value="../bild.jpg" rendered="#{!(fn:length(item.name) > 5)}" />
```


----------



## robsc (12. Mrz 2009)

oh ich dachte er wollte alternativ nen text anzeigen.  sollte den text mal genauer lesen ;-)
aber es würde doch viel mehr spaß machen, eine eigene Komponente zu entwickeln


----------



## gex (12. Mrz 2009)

@robsc

mag schon sein, ist nur nicht so wirklich wirtschaftlich


----------



## Terminator (12. Mrz 2009)

Hm warum man da eigene Kompo braucht versteh ich net.
Das mit dem JSTL ist da schon besser, solang mans nur einmalig braucht.
Ansonsten eben ein eigener Renderer zur Standard Kompo.

Aber das JSTL Zeugs würd ich in meinen Pages nicht mehr einsetzen wollen.
Irgendwie total veraltet, wie damals mit den JSPs, dievoll unübersichtlich waren.
Finds besser man tut den Vergleich in eine Backing Bean Methode auslagern, di dann eben nur true/false zurückliefert.


----------



## gex (12. Mrz 2009)

naja, JSTL ist von da her nicht schlecht, da in diesem fall eigentlich das GUI wissen sollte, was es anzuzeigen hat.
Aber klar, kann mach auch ins Backing Bean knallen.


----------



## Terminator (12. Mrz 2009)

jo wobei für mich backing bean zur GUI zählt


----------



## Samson_Miller (13. Mrz 2009)

@gex

Besten Dank, das habe ich gesucht. Jetzt würde ich noch gerne wissen, wofür das "fn" in dem rendered-Attribut steht?


----------



## Terminator (13. Mrz 2009)

Standard JSTL Prefixe:
c: Core
x: XML processing
fmt: I18N formating
sql: Database access
fn: Expression language function


----------



## Samson_Miller (13. Mrz 2009)

Supi, vielen Dank


----------

