# JSP - Attribut-Werte aus JAVA-Klasse ?



## WyattEarp (28. Dez 2010)

Hallo zusammen,

ist es möglich, Attribut-Werte aus eine *.jsp-Seite über einen Getter aus einer *.java-Klasse abzurufen? Ziel ist es, möglichst wenig Redundanz zu haben und die Namen von Eingabefeldern am besten an einer zentralen Stelle zu definieren.

Ein kurzes Beispiel dessen, was ich machen möchte:

Java-Klasse (LoginServlet.java)


```
//...
private final static String usernameID = "username";

public static String getUsernameID() { return usernameID; }
//...
```

JSP-Seite
...
<input type="text" size="20" *name=" <% LoginServlet.getUsernameID(); %>"* />
...

Die fett markierte Stelle jedoch ist immer NULL. Lasse ich den gleichen Code jedoch zum Test mittels "System.out.println()" auf der Seite ausgeben, so schreibt er mir den richtigen Wert auf die Konsole. 

Mache ich syntaktisch etwas falsch, oder geht das überhaupt nicht, was ich möchte?

Vielen Dank im Vorraus


----------



## MQue (28. Dez 2010)

ist getUsernameID eine statische Methode oder schaut das hier nur so aus?
ansonsten mach diese Methode !!nur zu testzwecken!! mal static und probiers dann nochmal.

So weit ich weiß, geht das normalerweise schon, es kann aber natürlich sein, dass du 2 verschiedene Objekte erzeugst (sollte diese Methode nicht static sein).


----------



## WyattEarp (28. Dez 2010)

ja, "getUsernameID()" ist statisch, aber es funktioniert leider an der fett markierten Stelle nicht. An anderer Stelle im Code (zu Testzwecken mal probiert) funktioniert es schon. Das ist es, was mich wunder :bahnhof:


----------



## Final_Striker (28. Dez 2010)

versuche es mal mit:
<input type="text" size="20" name=" <%= LoginServlet.getUsernameID(); %>" />


----------



## MQue (28. Dez 2010)

Zeig mal die Klasse, wo getUsernameID drinnen ist. Bei einer static- Methode wundert mich das jetzt auch sehr stark.
was wird ausgegeben, wenn du irgendwo in der JSP das machst:


```
<%
String userId = LoginServlet.getUsernameID();
System.out.println("Das ist die UserId: " + userId)
%>
```

Du könnstest ja die UserID mal in den Servlet- Context speichern und dann an deiner Stelle wieder auslesen.


----------



## WyattEarp (28. Dez 2010)

@Final_Striker: hat fast geklappt dein Vorschlag. Musste nur das Semikolon weglassen am Ende. Was besagt dieses "="-Zeichen und wieso darf hier kein Semikolon sein? Hab mit JSP sonst noch nix gemacht ...

Nun sieht es folgendermaßen aus und funktioniert wie gewollt:

JSP (Ausschnitt)

<input type="text" size="20" name="<%= LoginServlet.getUsernameID() %>" /></td>

Login-Servlet (Ausschnitt)


```
//...
private final static String usernameID = "username";
//...
public static String getUsernameID() { return usernameID;}
}
```

HTML-Code (Ausschnitt)

<input type="text" size="20" name="username" />


@Final_Striker, MQue: Danke euch beiden für die schnelle Hilfe


----------



## MQue (28. Dez 2010)

in <%= %> darf nur das stehen, was man z.B.: mit System.out.println(""); ausgibt,
stell dir einfach vor dass das, was in <%= %> steht, mit System.out.println ausgegeben wird.

JSP Tutorial


----------



## WyattEarp (28. Dez 2010)

Danke dir


----------



## tagedieb (28. Dez 2010)

Mit 
	
	
	
	





```
<%= [I]Expresion[/I] %>
```
 schreibst du das Ergebnis deiner Expresion direct in den HTML Code.

Mit 
	
	
	
	





```
<% [I]Script[/I]; %>
```
 verwendest du wenn du zusaetzlichen Java Code ausfuehren musst. z.B fuer Schleifen. Das Ergebnis wird aber nicht in den HTML Code eingefuegt.



```
<%= LoginServlet.getUsernameID(); %>
```
 ist dasselbe wie wenn du 
	
	
	
	





```
LoginServlet.getUsernameID();
```
 in deinem Java Code aufrufst. Da passiert auch nicht wenn du's nicht via System.out.println ausgibst.


----------

