Hallo,
nach
usw.
kommt eine JSF-Datentabelle mit JSTL-Vergleich:
Bei dieser Abfrage ( <c:choose> ... </c:choose> ) - und es geht hier vor allem noch um die Übung - soll
ermittelt werden, ob der Menüpunkt, der an der Stelle angebaut werden soll, gewählt ist, denn dann
soll er nämlich anders dargestellt werden als die übrigen.
Obwohl die Zeilen
beim gewählten Menüpunkt den gleichen Output zwischen den drei Erkennungshelferzeichen
(Whitespaces etc.) links und rechts liefern, ergibt
nicht true, kein Punkt erscheint damit also anders dargestellt.
Warum greift die Abfrage nicht, auch, wenn inhaltlich gleiche Strings vorliegen?
Die Properties liefern jeweils - gemessen am Output - den gleichen String zurück,
wenn der gewählte Menüpunkt aufgebaut wird:
Kann es an den Daten liegen,
liegt der Fehler im JSTL- / EL-Bereich,
hat es was mit dem Scope oder einer deferred-Problematik
zu tun oder vergleiche ich an der Stelle womöglich die
Referenzen und nicht die Inhalte der Strings, brauche ich evtl.
so was wie .equals() ?
Gruß Fips
.
nach
Java:
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
usw.
kommt eine JSF-Datentabelle mit JSTL-Vergleich:
Java:
<h:dataTable value="#{menuBean.menudata}"
var="menu"
styleClass="hauptMenu"
columnClasses="menuSpalte1, menuSpalte2"
width="186"
border="0" cellpadding="0" cellspacing="0">
<h:column>
<c:out value="XXX${navigation.hauptmenupunkt}XXX" />
<h:outputText value="YYY#{menu.id}YYY" />
<c:choose>
<c:when test="${navigation.seite eq '#{menu.menupunkt}'}">
<div id="pfeil_<h:outputText value="#{menu.menupunkt}" />">
<h:graphicImage url="/grafik/menue/leer_aktiv.png"
width="34"
alt="#{menu.menupunkt} Pfeil"
title="#{menu.menupunkt} Pfeil" />
</div>
</c:when>
<c:otherwise>
<h:outputLink value="/java/#{menu.menupunkt}.jsf"
onmouseover="pfeilAktiv('#{menu.menupunkt}')"
onmouseout="pfeilInaktiv('#{menu.menupunkt}')">
<div id="pfeil_<h:outputText value="#{menu.menupunkt}" />">
<h:graphicImage url="/grafik/menue/leer_inaktiv.png"
width="34"
alt="#{menu.menupunkt} Pfeil"
title="#{menu.menupunkt} Pfeil" />
</div>
</h:outputLink>
</c:otherwise>
</c:choose>
</h:column>
<h:column>
<c:choose>
<c:when test="${navigation.seite eq '#{menu.menupunkt}'}">
<h:graphicImage url="/grafik/menue/menuepunkt_#{menu.menupunkt}_aktiv.png"
id="menue_punkt_${menu.menupunkt}"
width="152"
alt="#{menu.menupunkt}"
title="#{menu.menupunkt}" />
</c:when>
<c:otherwise>
<h:outputLink value="/java/#{menu.menupunkt}.jsf"
onmouseover="pfeilAktiv('#{menu.menupunkt}')"
onmouseout="pfeilInaktiv('#{menu.menupunkt}')">
<h:graphicImage url="/grafik/menue/menuepunkt_#{menu.menupunkt}.png"
id="menue_punkt_${menu.menupunkt}"
width="152"
alt="#{menu.menupunkt}"
title="#{menu.menupunkt}" />
</h:outputLink>
</c:otherwise>
</c:choose>
</h:column>
</h:dataTable>
Bei dieser Abfrage ( <c:choose> ... </c:choose> ) - und es geht hier vor allem noch um die Übung - soll
ermittelt werden, ob der Menüpunkt, der an der Stelle angebaut werden soll, gewählt ist, denn dann
soll er nämlich anders dargestellt werden als die übrigen.
Obwohl die Zeilen
Java:
<c:out value="XXX${navigation.hauptmenupunkt}XXX" />
<h:outputText value="YYY#{menu.id}YYY" />
beim gewählten Menüpunkt den gleichen Output zwischen den drei Erkennungshelferzeichen
(Whitespaces etc.) links und rechts liefern, ergibt
Java:
<c:when test="${navigation.seite eq '#{menu.menupunkt}'}">
nicht true, kein Punkt erscheint damit also anders dargestellt.
Warum greift die Abfrage nicht, auch, wenn inhaltlich gleiche Strings vorliegen?
Die Properties liefern jeweils - gemessen am Output - den gleichen String zurück,
wenn der gewählte Menüpunkt aufgebaut wird:
Java:
public String getSeite()
{
if ( seite == null )
{
return "home";
}
else
{
return seite;
}
}
Java:
public String getMenupunkt ( )
{
return this.menuPunkt;
}
Kann es an den Daten liegen,
liegt der Fehler im JSTL- / EL-Bereich,
hat es was mit dem Scope oder einer deferred-Problematik
zu tun oder vergleiche ich an der Stelle womöglich die
Referenzen und nicht die Inhalte der Strings, brauche ich evtl.
so was wie .equals() ?
Gruß Fips
.
Zuletzt bearbeitet: