# Expression Language in Java



## sanschezzz (14. Mai 2010)

Hallo,
ich habe einen Ausdruck in Expression Language vorliegen. ${id}.
Den Wert von ${id} möchte ich nun allerdings in meinem Java Quellcode verwenden.


```
var id= "<%=${id}%>";
```

so oder so ähnlich auf jeden Fall. Meine google-Suche blieb bislang erfolglos!

Danke


----------



## Noctarius (14. Mai 2010)

Du musst den Wert doch vorher kennen  Oo Was du machen willst geht nicht.


----------



## sanschezzz (14. Mai 2010)

```
<c:forEach var="orderItem" items="${page.orderItem}" varStatus="status">
	<c:set var="itemId" value="${order.orderItem.uniqueID}"/>
</c:forEach>
```

so hole ich mir den Wert und speicher ihn eben in ${itemId}

Nun möchte ich allerdings mit dem Wert weiter arbeiten und zwar in Java. Ist dies nicht möglich?


----------



## Noctarius (14. Mai 2010)

Nein aber du kannst doch auf die selbe Weise in Java den Wert holen.

```
for (OrderItem item : orderItems)
  int itemId = item.getUniqueID();
```


----------



## sanschezzz (14. Mai 2010)

Das wäre leider sehr aufwendig, da ich zahlreiche JSP Abfragen vorher schon habe und diese dann alle in Java umsätzen müsste.
Habe nur gehofft, das ich einfach die Expression Language irgendwie in/an Java übergeben kann.


----------



## Noctarius (14. Mai 2010)

Rein logisch geht das schon nicht, da das JSP der letzte Layer in der Abarbeitungsfolge ist, nämlich der View.


----------



## SlaterB (14. Mai 2010)

Noctatius, weißt du überhaupt um in JSP eingebetteten Java-Code usw. Bescheid?

deine Antworten klingen teils so als wenn du das grundsätzlich nicht kennst/ ablehnst, obwohl sie auch genau den Umständen dabei entsprechen könnten,
ich hab schon lange keine JSP mehr gesehen mit den Variablenübergaben usw. dort,

wäre auf jeden Fall auch etwas was man in Tutorials grundsätzlich nachschauen sollte


----------



## Noctarius (14. Mai 2010)

Ja moment in JSP eingebetter Java Code ist etwas anderes als von Java aus darauf zugreifen.



sanschezzz hat gesagt.:


> ... möchte ich nun allerdings in meinem Java Quellcode verwenden...


Zu mindestens heißt das für mich eher von einer anderen Class aus auf die Expression Language zugreifen und das geht definitiv nicht.

Innerhalb von JSP in Java Codeblöcken (stimmt die habe ich direkt außen vorgelassen, weil es für mich anders klang) geht es.


----------



## maki (14. Mai 2010)

*verschoben*
Passt hier besser...

Es gibt meherere EL für JSPs, musst schon genau werden, in JSF zB. kann man auf den EL Resolver zugreifen von Java aus(gab erst letztens einen Post dazu hier), ob das sinnvoll ist ist eine andere Frage.


----------



## sanschezzz (14. Mai 2010)

Also ist es grundsätzlich nicht möglich in einem Java-Ausschnitt in einer JSP auf einen Expression Language Ausdruck zuzugreifen?


----------



## maki (14. Mai 2010)

Doch, sagte ich auch bereits, wäre aber nicht so sinnvoll, sagte ich auch bereits.
Von dir fehlen noch konkrete Informationen.


----------



## sanschezzz (14. Mai 2010)

OK. Sorry. ich werde euch einfach mal meinen Quellcode posten.


```
...

<c:forEach var="orderItem" items="${pagorder.orderItem}" varStatus="status">
	<c:set var="itemId" value="${orderItem.orderItemIdentifier.uniqueID}"/>
</c:forEach>	

<%	 
        String newPathToImage = ${itemId};
	String oldPathToImage = "";
	String mainDir = "c:\\USERDATA\\";

  	Cookie[] cookies = request.getCookies();

	for ( int i = 0; i < cookies.length; i++ )
    {
      	String cookieName = cookies[i].getName();
      
      	if(cookieName.equals("pathToImage"))
      	{
			oldPathToImage = cookies[i].getValue();
    	}
 	}

	File fil = new File(mainDir+oldPathToImage);
	fil.renameTo(new File(mainDir+newPathToImage));
%>
```

Der Fehler liegt jetzt in Zeile 8. Wie kann ich Ihne beheben?

Danke


----------



## maki (14. Mai 2010)

Vermute mal dass du die JSTL verwendest...
Wenn du c:set verwendest und kein Scope angibst, wird per Default das Page Scope verwendet, kannst es dort wieder rausholen.

Ist aber wie gesagt ganz mieser Stil (wenn man da überhaupt so nennen kann), schliesslich ist die JSTL dazu da, Scriplets zu vermeiden, wenn du wieder beides machst(JSTL + Scriplets), wird es dadurch noch umständlicher.


----------



## sanschezzz (14. Mai 2010)

und das sieht dann wie aus?

page.itemId; ?


----------

