# TagLib mit Java-Code mischen



## kartoffelsack (20. Jul 2007)

Ich möchte gern in einem JSP Java-Code zusammen mit der Struts2-Taglib verwenden.

Konkret: 
ich habe Konstanten für die Keys der Attribute in der Session.
Wenn ich in meinem JSP auf so ein session-Attribut zugreife möchte ich das nicht mit

```
<s:iterator value="#session.attributname">
```
sondern mit

```
<s:iterator value="#session.<%=ATTRIBUT_NAME_KONSTANTE%>">
```
machen. Leider wird der Java-Code im Wert von Value vom Servlet-Processor anscheinend nicht ausgeführt.

Hier nochmal das ganze Beispiel:


```
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page import="static com.bla.SessionTools.AttributeNames.*"%>
<html>
<head>
    <title>Sign On</title>
</head>

<body>

  <s:iterator value="#session.REGISTERED_METHODS">
    das funzt
    <s:property />

  </s:iterator>  
    
  Das funzt auch <%=REGISTERED_METHODS%>
  
  <s:iterator value="#session.<%=REGISTERED_METHODS%>" >
    das funzt NICHT
    <s:property />

  </s:iterator>

</body>
</html>
```


Wie kann ich das machen?


----------



## WeirdAl (20. Jul 2007)

Hi,
aus welchem Grund willst Du das so machen? Ich sehe da im Moment keinen Sinn drin deinen Quellcode mit Scriptlets zu verunstalten.

Cu
Alex


----------



## kartoffelsack (20. Jul 2007)

Naja, das sind die ganz normalen Vorteile von Konstanten gegenüber ständigem Wiederholen eines Werts

Hier Konkret
- Wenn ich mich im JSP vertippe, krieg ich - im Fall von Konstanten - irgendwie ne Fehlermeldung vom Container, wenn ich den String falsch tippe wundere ich mich nur, warum es keine Werte anzeigt.
- Falls ich mal den Attributnamen ändere, muss ichs nur an einer Stelle tun.
- etc...


----------



## WeirdAl (20. Jul 2007)

kartoffelsack hat gesagt.:
			
		

> Ich möchte gern in einem JSP Java-Code zusammen mit der Struts2-Taglib verwenden.
> 
> Konkret:
> ich habe Konstanten für die Keys der Attribute in der Session.
> ...



Ja, aber wieso willst Du das mit nem scriptlet machen? 

Was steht denn in ATTRIBUT_NAME_KONSTANTE drin? Steht dort das Attribut aus der Session drin oder ein konkreter Wert?
Wenn Du zB String ATTRIBUT_NAME_KONSTANTE = "attributname" nutzt, müsste dein Code funktionieren, da dann aus deinem #session.<%=ATTRIBUT_NAME_KONSTANTE%> ein #session.attributname wird. Dann könntest Du aber auch direkt die Konstante in die Session legen und dann zb mit #session.KONSTANTE darauf zugreifen.

Oder versteh ich da was falsch?

Cu
Alex


----------



## kartoffelsack (20. Jul 2007)

WeirdAl hat gesagt.:
			
		

> Was steht denn in ATTRIBUT_NAME_KONSTANTE drin? Steht dort das Attribut aus der Session drin oder ein konkreter Wert?
> Wenn Du zB String ATTRIBUT_NAME_KONSTANTE = "attributname" nutzt, müsste dein Code funktionieren, da dann aus deinem #session.<%=ATTRIBUT_NAME_KONSTANTE%> ein #session.attributname wird. Dann könntest Du aber auch direkt die Konstante in die Session legen und dann zb mit #session.KONSTANTE darauf zugreifen.
> 
> Oder versteh ich da was falsch?
> ...



Bin nicht sicher, ob Du mich verstehst.

#session.<%=ATTRIBUT_NAME_KONSTANTE%> funzt ja eben nicht, weil er offensichtlich das Skriptlet nicht auflöst wenn es in value="<%=scriptlet%> steht.


----------



## kartoffelsack (1. Aug 2007)

siehe hier: http://forums.opensymphony.com/thread.jspa?messageID=175054


----------

