JSTL
Smart
- java
Hi,
ich hoffe, dass jemand sich hier mit JSTL auskennt.
Meine Frage:
Ich habe eine Methode getId(), deren Inhalt via JSTL in Value-Bereich eines "<input ..>"-Elemntes eintragen möchte. Das habe ich versucht:
<jsp:useBean id="myInhalt" scope="session" class="myPackage.myTools" />
<input type='text' size='10' id='Id' value='<c:out value='#{myInhalt.id}' />'>
Das kalppt wie erwartet nicht. Wie kann ich hinbekommen?
Danke im Voraus.
Gruß
Servus,
[...]
<jsp:useBean id="myInhalt" scope="session" class="myPackage.myTools" /><input type='text' size='10' id='Id' value='<c:out value='#{myInhalt.id}' />'>
warum verwendest Du denn das jsp:useBean? Das Objekt befindet sich zum Zeitpunkt des JSP-Renderings in der Session? Dann kannst Du doch einfach mit der Expression Language arbeiten ${myInhalt.id}.
Schöne Grüße,
Peter
Hallo Peter,
danke für die Antwort.
Ich weiß nicht ganz genau, ob ich das alles richtig mache.
Ich befülle die Attribite in JSP-Seite einfach mittels eines Klassenobjektes. Kann man nun ohne weiteres via JSTL auf Werte zugreifen?
private String id;
public String getId(){
return id;
}
Wenn ich jetzt die Methode via JSTL aufrifen möchte:
<input type='text' size='10' id='Id' value='<c:out value='#{myInhalt.getId()}' />'>
Habe ein Haufen Fehlermeldung, z.B.:
PWC6296: The function getId must be used with a prefix when a default namespace is not specified
So funktioniert auch nicht:
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<input type='text' size='10' id='Id' value='<c:out value='#{fn:myInhalt.getId()}' />'>
Ich weißß leider nicht, was ich da sonst machen muss.
Gruß
[...]
Ich befülle die Attribite in JSP-Seite einfach mittels eines Klassenobjektes. [...]
Wenn Dein Quellcode als Scriptlet in der JSP steht, dann kann ich Dir leider nicht weiterhelfen. Solche Schweinereien unterstütze ich nicht. :)
Ich habe noch in keinem Projekt mit Scriptlets gearbeitet und halte es auch nicht für nötig. Deshalb kann ich Dir hier nicht sagen, warum ein Objekt in irgendeinem Scope ist oder nicht.
Vermuten würde ich anhand Deines Codes, dass Du die Klasse zwar definierst, aber nirgends eine Instanz erzeugst, geschweige denn, diese in die Session legst.
Der bessere Weg ist in meinen Augen, die View von der Logik zu trennen und das ganze nach dem Model2 oder MVC Pattern zu gestalten. Dabei übernimmt ein Servlet die Aufgabe der Geschäftslogik (initialisieren von Objekten und ablegen im passenden Scope), und die JSP zeigt die Daten nur noch an.
Schöne Grüße,
Peter