# jsp:include mit dynamischem Dateinamen aus Struts2-Property



## mmm (21. Jan 2008)

Hallo,

der Titel enthält eigentlich bereits alles:

Ich habe eine Struts2-Action mit einer Property "filename".

In der JSP möchte ich nun über <jsp:include page="${filename}" /> die entsprechende Datei einbinden - leider klappt das nicht.

Ich habe es schon mit



```
<jsp:useBean class="frontend.action.StaticContentWrapper" id="wrapper"></jsp:useBean>
<jsp:include page='<%= wrapper.getFilename() %>'></jsp:include>
```

versucht, leider erfolglos - wrapper.getFilename() lieferte null zurück, obwohl <sroperty value="filename" /> den korrekten Wert ausgab.

Mein nächster Versuch sah so aus:


```
<jsp:include page="<s:property value="filename" />" />
```

Leider wurde das mit 

```
org.apache.jasper.JasperException: /pages/staticContentWrapper.jsp(22,47) equal symbol expected
```

quittiert...

Mir fällt keine weitere Möglichkeit mehr ein, deswegen wäre ich sehr dankbar, wenn mir jemand helfen könnte.


----------



## Sempah (21. Jul 2009)

Hallo zusammen, 

ich habe ein ähnliches Problem: Und zwar würde ich gerne innerhalb einer JSP eine Struts2 Action Klasse einbinden. Bisher hatte ich in einer html einen Link auf meine Action Klasse: 
<a href="dm/MeineAction.action">MeineAction</a>

Dies funktioniert auch wunderbar, jedoch würde ich nun gerne eine Seite basteln, in der mehrere Action-Klassen (JSP's) vereint werden.

-> <s:include value="dm/MeineAction.action" /> funktioniert leider nicht (The requested resource (/PROJEKTNAME/STRUTSNAMESPACE/MeineAction.action) is not available.
Die JSP, von der ich versuche zu includieren liegt auf der gleichen Ebene, wie die html (von der ich verlinkt habe).

Hiernochmal kurz meine Verzeichnisstruktur:

```
+ src
   + package
      - MeineAction.java
      - struts.xml
+ WebContent
   + pages
      - MeineAction.jsp
   + WEB-INF
   - index.jsp
```

Ich versuche also von der index.jsp auf MeineAction.jsp (mit Ausführung der Action-Klasse) zuzugreifen.
Wenn ich lediglich die JSP einbinde, wird die Action-Klasse nicht ausgeführt.


----------



## maki (21. Jul 2009)

Tiles funktioniert sehr gut mit struts, zumindest war das früher so.


----------



## Sempah (21. Jul 2009)

Okay nach anfänglichen Schwierigkeiten habe ich nun mehr oder weniger Struts2 + Tiles2 verbinden können.
Jedoch ist nach wie vor das Problem, das die Struts-Action-Class nicht ausgeführt wird.

Lediglich das JSP-Grundgerüst ohne Inhalt wird mir angezeigt. (erstelle in der Struts-ActionClass dynamisch eine Tabelle). Ich vermute, dass es an der Struts-Config hängt, die das mapping zur Action Class nicht hinbekommt.


----------



## maki (21. Jul 2009)

Du verwendest die Tiles Tags und hast Tiles konfiguriert?


----------



## Sempah (22. Jul 2009)

Eigentlich schon, ja ...

WebContent/index.jsp:

```
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<tiles:insertDefinition name="MeineSeite" />
```

WebContent/WEB-INF/tiles-def.xml:
[XML]<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE tiles-definitions PUBLIC
       "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
       "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">
<tiles-definitions>
	<definition name="MeineSeite" template="/template/template.jsp">
		<put-attribute name="header" value="/template/defaultHeader.jsp" />
		<put-attribute name="menu" value="/template/defaultMenu.jsp" />
		<put-attribute name="body" value="/pages/contentXy.jsp" />
		<put-attribute name="footer" value="/template/defaultFooter.jsp" />
	</definition>
</tiles-definitions>[/XML]

struts.xml:
[XML]<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
	<constant name="struts.enable.DynamicMethodInvocation" value="false" />
	<constant name="struts.devMode" value="false" />

	<package name="dm" namespace="/dm" extends="struts-default">

		<result-types>
			<result-type name="tiles"
				class="org.apache.struts2.views.tiles.TilesResult" />
		</result-types>

		<action name="index">
			<result type="tiles">MeineSeite</result>
		</action>

_		<action name="MeineSeite" class="de.package.MeineSeite">
			<result>/pages/contentXy.jsp</result>
		</action>_
	</package>
</struts>[/XML]

wobei das kursive "struts-only" ist.


web.xml Ausschnitt:
[XML]	<context-param>
		<param-name>
			org.apache.tiles.definition.DefinitionsFactory.DEFINITIONS_CONFIG
		</param-name>
		<param-value>
			/WEB-INF/tiles-defs.xml
        </param-value>
	</context-param>
	<listener>
		<listener-class>org.apache.tiles.web.startup.TilesListener
		</listener-class>
	</listener>[/XML]


----------

