links aus xml generieren

Status
Nicht offen für weitere Antworten.
S

Search

Gast
hallo zusammen

auf einer administrationsseite (jsp) wird ein menu mit verschiedenen links angezeit. je nach umgebung sollen nun die entsprechenden links angezeigt werden. diese links werden in einem xml file definiert. habs nun so weit dass ich alle benötigten links aus dem xml lesen kann. wie bekomme ich diese nun auf meine jsp seite? ist es irgendwie möglich beim serverstart das xml zu lesen und dann ein jsp zu generieren (also das menu aufzubereiten)? oder wie könnte man das anders lösen?

bin für tips dankbar, gruss
 

Bleiglanz

Gesperrter Benutzer
schreib einen contextListener, der beim hochfahren die xml datei mit einem stylesheet (xsl) in eine html oder jsp transformiert...

oder machs dynamisch (ist besser) in einer jsp mit der JSTL
 
S

search

Gast
danke für die antwort. jstl tönt interessant, habe jedoch noch nie was damit gemacht. wird damit wenn die seite geladen wird dirket auf das xml zugegriffen und in meinem fall die links ausgelesen? hast du evtl. ein kleines beispiel?

danke & gruss
 

Bleiglanz

Gesperrter Benutzer
Code:
 <c:import url="xmlSource.xml" var="xml" />
 <c:import url="xmlXsl.xsl" var="xsl" />
 <x:transform xml="${xml}" xslt="${xsl}" var="source" />
 
S

search

Gast
aha, was beinhaltet denn dieses *.xls file?

werd mir das mal noch genauer anschauen. danke schon mal.

gruss
 
S

Search

Gast
hallo

kann ich auch das file auslesen und durch iterieren? irgendwie so:

Code:
<c:import var="rssFeed" url="/WEB-INF/Config.xml"/>
<x:parse var="rss" xml="${rssFeed}"/>

und danach durch das file iterieren mit <x:forEach>. wär das möglich?

gruss
 
S

Search

Gast
so, ich nochmal

habs nun soweit:

Code:
<c:import var="rssFeed" url="/WEB-INF/Config.xml"/>
			<x:parse var="rss" xml="${rssFeed}"/>

			<x:forEach select="$rss//*[name()='menuoption']">
                      <tr>
			  <td><logic:notEqual name="action" value='<x:out select="./*[name()='link']"/>' scope="request"></td>
		      </tr>
			</x:forEach>

nun bekomme ich beim value='<x:eek:ut select="./*[name()='link']"/>' immer folgenden fehler: "Das Attribut link hat keinen Wert". Wie muss ich das umschreiben damit das so funktioniert? der <x:eek:ut select="./*[name()='link']"/>-Befehl an sich funktioniert so.

danke & gruss
 
S

Search

Gast
stimmt! vielen dank. funktioniert auch so. nur das problem ist, das ich den tag nicht in einem weiteren verwenden kann. also das:

<logic:notEqual name="action" value='<x:eek:ut select="./*[name()='link']"/>' scope="request">

funktioniert so nicht. ne idee wie ich das anders löschen könnte? die value wird nicht ausgelesen aus dem tag.

danke & gruss
 
S

Search

Gast
komme einfach nicht weiter... bis jetzt habe ich folgendes:

Code:
<c:import var="rssFeed" url="/WEB-INF/Config.xml"/>
			<x:parse var="rss" xml="${rssFeed}"/>

			<x:forEach select="$rss//menuoption">			  
				<x:set var="fooBar" select=".//name"/>
			  	<x:out select="$fooBar"/>, <x:out select="$action"/> // nur zum testen	    
			    <c:choose>
			      <c:when test="${fooBar == $action}">do this</c:when>
			      <c:otherwise>do that</c:otherwise>
		        </c:choose>
			</x:forEach>

der compare stimmt jedoch so nicht... die variabeln werden so nicht auf ihren inhalt verglichen... müsste es so oben wie im testfall machen... dann stimmen die werte... wie ich das machen muss habe ich bisher jedoch nicht herausgefunden... das problem liegt wohl an dem <c:when... gibt es eine möglichkeit mit einem <x:when den selben vergleich zu machen? oder wie könnte man das sonst noch vergleichen? jemand eine idee? komme echt nicht mehr weiter...

danke & gruss
 

Bleiglanz

Gesperrter Benutzer
was für eine fehlermeldung?

BTW == ist an der Stelle wohl falsch, wie fast immer in java, wenn man zwei objekte "inhaltlich" vergleichen will
 
S

Search

Gast
fehlermeldung wird keine ausgegeben. der wert von fooBar ist halt einfach null was er eigentlich gar nicht ist. mit einem <x:eek:ut wird der wert korrekt ausgegeben. wie müsste ich die den anders vergleichen? ein equals wirds hier wohl kaum geben. oder gibt es eine möglichkeit mit <x:when zwei variabeln zu vergleichen? bin bisher nicht fündig geworden. oder wäre es möglich den <c:when anders zu schreiben? ist etwas wirr die ganze sache.

was ich nicht verstehe ist das ich folgendes nicht machen kann:

Code:
<c:set var="test">
  <x:out select=".//name"/>
</c:set>

wieso geht das nicht? habe beispiele gefunden wo es eigentlich genau so aussieht. mache ich beim einlesen des files einen fehler (das funktioniert eigentlich)?

danke & gruss
 
S

Search

Gast
der oben genannte fehler (<c:set>) gibt folgenden fehler aus:

[28.04.05 08:25:39:519 CEST] 2501fb0e WebGroup E SRVE0026E: [Servlet-Fehler]-[javax/servlet/jsp/el/ELException]: java.lang.NoClassDefFoundError: javax/servlet/jsp/el/ELException
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:1753)
at java.lang.Class.getDeclaredMethods(Class.java:1219)
at java.beans.Introspector$1.run(Introspector.java:1120)
at java.security.AccessController.doPrivileged(Native Method)
at java.beans.Introspector.getPublicDeclaredMethods(Introspector.java:1118)
at java.beans.Introspector.getTargetMethodInfo(Introspector.java:983)
at java.beans.Introspector.getBeanInfo(Introspector.java:387)
at java.beans.Introspector.getBeanInfo(Introspector.java:158)
at java.beans.Introspector.getBeanInfo(Introspector.java:219)
at java.beans.Introspector.<init>(Introspector.java:368)
at java.beans.Introspector.getBeanInfo(Introspector.java:158)
 
S

Search

Gast
gibts irgend ne möglichkeit die beiden zu vergleichen:

Code:
<x:out select="$option"/>

vergleichen mit

Code:
<c:out value="${action}"/>

gruss
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben