JSTL Tags funktionieren nicht in Facelets/MyFaces

Status
Nicht offen für weitere Antworten.

alan79

Mitglied
Hallo miteinander

Folgende Libs werden verwendet.
- MyFaces 1.2.2
- Richfaces 3.2
- Facelets 1.1.13
- Hibernate 3.2.4
Applicationserver: Tomcat6


In meiner MySQL DB gibts eine Tabelle "news". Bestehend aus folgenden Feldern:
header (varchar(50))
description (text)

Ich möchte gerne die "News"-Datensätze Auflisten. Funktioniert alles soweit sehr gut. Allerdings möchte ich gerne die "description", falls grösser als 60 Zeichen, in der Liste auf 60 Zeichen kürzen. Falls die description gekürzt wurde soll ein Link "Read more" eingeblendet werden.

Grundsätzlich stellt sich hier für mich schon mal die Frage, wo diese Logik implementiert werden sollte? Ich verfolge das MVC Konzept.
Aus meiner Sicht geht es hier um eine reine GUI thematik und daher sollte diese Funktionalität doch eigentlich in die View oder allenfalls den Controller integriert werden..

Ich habe versucht das Ganze mit JSTL zu realisieren. Musste jedoch feststellen, das JSTL zusammen mit Facelets nicht 100%ig funktioniert? Oder?
Die Funktionen "fn:length" und "fn:substring" funktionieren. "c:if" jedoch nicht, es scheint so, als wird jede "c:if" Schleife ausgewertet, egal wie die Bedingung evaluiert.

Hat jemand eine Idee wie ich diese Funktionalität direkt in der Page integrieren könnte?

Danke für irgendwelche Tipps und Tricks.
Grüsse
Alan
 

freez

Top Contributor
Hm, ich realisiere so etwas in einer Managed Bean. Im Action Listener (oder wegen mir auch in ner Action Methode) hole ich mir die Daten aus der DB und kürze dann bei Bedarf den String auf die 60 Zeichen. Zusätzlich setze ich ein boolean auf true, welche ich im Rendered Attribut des commandLink "Read More" abfrage. Somit brauche ich jstl dafür nicht.

Ob diese Vorgehensweise richtig ist, kann man diskutieren, aber mir hat das schon gute Dienste geleistet.
 

alan79

Mitglied
hallo freez
Danke für deine Antwort.

Ich habe auch schon versucht das Ganze in der Managed Bean umzusetzen. Habs allerdings noch nicht 100%ig zum laufen gekriegt..

Die Datenkürzung hat mal soweit geklappt. War allerdings nicht ganz einfach da ich Hibernate nutze und da hab ich festgestellt, dass man höllisch aufpassen muss, dass die Datenkürzung nicht automatisch gespeichert wird. Das hat dann schlussendlich eigentlich alles geklappt (detached Objects). Obwohl es bei der Auswahl / Bearbeitung des Datensatzes noch ein paar Problemchen gibt.

Das mit dem "rendered" Attribut hab ich bis jetzt nicht hingekriegt. Ich habe verschiedene Wege ausprobiert.
Ich hab da wahrscheinlich noch ein Verständnisproblem. Ich habe auch in der Managed-Bean eine Boolean definiert. Nur verstehe ich nicht wo und wann dieser Boolean wert gesetzt werden muss. In meine versuch habe ich über das "rendered" Attribut eine Methode in der Managed-Bean aufgerufen:


Code:
	public Boolean getReadMoreRendered() {

		
               News temp = (News) dataTable.getRowData();
		
		if (temp.getDescription().length()>60){
			return true;
		}
		else
		{
			return false;
		}
	}

Das Ganze endet jedoch dann in einer NullPointerException. "dataTable.getRowData()" kann zum "render"-Zeitpunkt anscheinend nicht aufgerufen werden. Wie kann ich in der Methode auf die entsprechende Row zugreifen?
Ich habe mir auch schon überlegt, dieses Boolean in der Backing-Bean "News" direkt zu berechnen. Da ich jedoch Hibernate Reverse Engineering (-> Backing Beans werden automatisch generiert) nutze finde ich diese Lösung sehr unschön.

Vielen Dank für Deine Hilfe!
Grüsse
Alan
 

alan79

Mitglied
kann man in

rendered="#{newsHandler.getReadMoreRendered}"

überhaupt eine Methode aufrufen oder nur auf Eigenschaften zugreifen?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R JSP JSTL <x:if> <c:if> string vergleichen Web Tier 2
J JSP JSTL <c:url> - jsessionid auslesen Web Tier 1
C jstl: collection property auf mehrere seiten Web Tier 2
J JSP JSTL innerhalb Tag-Attribut Web Tier 3
A javax/servlet/jsp/jstl/core/Config Web Tier 1
ruutaiokwu jstl-basierendes tag in jsf 2.0. facelets/xhtml? Web Tier 5
H jstl variable setzen? Web Tier 9
W Java code aus JSP-File durch JSTL code ersetzen Web Tier 8
S JSTL - foreach Schleife ? Web Tier 3
P For-Schleife mit JSTL über ArrayList Web Tier 8
J JSTL-Vergleich (choose) innerhalb JSF-Datentabellen-Aufbau greift nicht Web Tier 4
L Struts JSTL Form Variable Übermitteln Web Tier 2
sliwalker forEach und Scriptlet: Daten aus Scriptlet in jstl sehen Web Tier 2
megachucky JSF - JSTL Library wird nicht gefunden Web Tier 4
T Per JSTL aus 0,45 --> 45 machen Web Tier 2
G [JAVA / JSP] ArrayList in JSTL foreach verarbeiten Web Tier 4
AyKay i18n JSTL Verknüpfung mir der JAR. Wie? Web Tier 9
W JSTL SQL Driver? Web Tier 11
W JSTL macht Probleme Web Tier 6
G Mit JSTL Rückgabe von Bean Methode ausgeben Web Tier 3
G Session in Servlet Starten und mit JSTL auslesen Web Tier 2
OSteNfanT Verzweifle an JSTL Web Tier 2
A JSF Verständnisproblem mit den Tags <ui:include> und <ui:define> Web Tier 1
V JSF JSF und Standard HTML-Tags Web Tier 7
S Falsche Darstellung von JSF-Tags Web Tier 2
7 statische Variablen in Struts-Tags nutzen? Web Tier 6
O Struts2 - vollständige Beschreibung der Tags gesucht Web Tier 6
O JSP: HTML tags werden vor struts tags angezeigt Web Tier 3
R JSF Custom Tags + Facelets Web Tier 2
M Zugriff aus eigenen Tags auf Struts Value Stack Web Tier 2
leifg Parameter für Tags aus String lesen (JSP 1.2) Web Tier 2
T RichFaces will nicht funktionieren :( Web Tier 2

Ähnliche Java Themen

Neue Themen


Oben