Mit Jstl einen Boolean Wert aus Java klasse abfragen und zugreifen

NikDa

Grünschnabel
Hallo ich hab da mal ne Frage....

wie frage ich in jstl ein Boolean Object ab, also ein flag das ich in der Session ablege, um es dann in der jsp-seite mittels jstl abzufragen, ob es gesetzt oder false ist?
habe es mit

<c:choose>
<c:when test="${blabla.flag eq 'true'}" > // so?
soll er das ausführen, bzw. anzeigen
</c:when>
<c:eek:therwise>
wenn false dann das anzeigen
</c:eek:therwise>
</c:choose>

also wie spreche ich das flag an?

das ich in der Java klase blabla so erstelle und mit setAttribute in der Session ablegen setze
flag = new Boolean(true);

will das irgendwie nicht ausführen, zu mindest zeigt er mir das nicht an wie ich es gern hätte, weiss auch garnicht ob er das flag auch wirklich abfragt?weil ich nicht weiss wie man das nach boolean in jstl richtig abfragt
 
Das Attribute test verlangt ein booleschen Ausdruck

ein boolscher Ausdruck kann sein:
1==1
myString.equals("bla")
oder eben auch
true
weshalb bei
Code:
<%
blbla.flag = true;
%>
<c:choose>
<c:when test="${blabla.flag}" > 
   ist true
</c:when>
<c:otherwise>
   ist false
</c:otherwise>
</c:choose>

funktioniert ;)
 
Hallo!

Wenn du Expressions in JSTL tags verwenden willst musst du auch schaun, dass du die JSTL tags verwendest due Expressions Unterstützen... ;-)
Manchmal haben diese ein -el oder -rt im Namen drin.

Mit den Expressions wird dann einfach ein Lookup in den Request/Session-Bereich gemacht und geschaut, ob dort ein Attribut mit dem passenden Namen vorhanden ist.

Code:
<%@ taglib uri="/WEB-INF/tlds/c-rt.tld" prefix="c"%>
<%@page contentType="text/html" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
	<head>
		<title>JSP Page</title>
	</head>
	<body bgcolor="#FFFFFF">
		<% request.setAttribute("abc",new de.asw.tutorial.Test()); %>
		<c:if test="${abc.b0}">
			b0 = true<br/>
		</c:if>
		<c:if test="${!abc.b0}">
			b0 = false<br/>
		</c:if>

		<c:if test="${!abc.b1}">
			b1 = false<br/>
		</c:if>

		<c:if test="${abc.b1}">
			b1 = true<br/>
		</c:if>
	</body>
</html>

hier die Klasse de.asw.tutorial.Test:
Code:
/*
 * ASW Berufsakademie
 * 
 * Created on 04.01.2005 / 20:08:08
 * 
 */
package de.asw.tutorial;

/**
 * @author Administrator
 *
 * TODO Explain what I do
 */
public class Test {
    private boolean b0 = true;
    private Boolean b1 = Boolean.FALSE;
    
    public Test(){
        System.out.println("Test.... init");
    }

    /**
     * @return Returns the b0.
     */
    public boolean isB0() {
        return b0;
    }
    /**
     * @param b0 The b0 to set.
     */
    public void setB0(boolean b0) {
        this.b0 = b0;
    }
    /**
     * @return Returns the b1.
     */
    public Boolean getB1() {
        return b1;
    }
    /**
     * @param b1 The b1 to set.
     */
    public void setB1(Boolean b1) {
        this.b1 = b1;
    }
}

Ausgabe:
b0 = true
b1 = false

Gruß Tom
 
Hallo Jungs danke für eure Antworten!

Also Christian Fein zu deinem Vorschlag, es funktioniert nicht, ich habe blabla.flag = true in der Java klasse gesetzt, den Rest aber so geschrieben wie deine Maske, führt egal was ich auch setzte nur den false Zweig aus.

Es ist so ich arbeite in einem Projekt drin, da waren schon die Klassen, diese die ich verwende stellt nur die View dar. Mehr nicht, aber mit jstl übernimmt er mir das session.setAttribute nicht.
Verstehst du mein Problem?
 
Nun zu Thomas Darimont...

wie oben gesagt, übernimmt meine Klasse den Teil der View, also für jede jsp-Seite habe ich eine Methode, und in diesen Methoden, da wird alles gesetzt und in Jstl ausgelesen, das ja nicht funktioniert.

erst wird gefragt ob ein parameter mit übergeben wurde,

Oh, sorry hab die ganze zeit klasse geschreiben hier ist ein teil der methode für die seite accountCustomer.jsp

hier was n beispiel

if (!Helper.isEqual(page, Constants.CUSTOMER)) {
flag = new Boolean(true);
} else if (!Helper.isEqual(page, Constants.ACCOUNT)) {
flag = new Boolean(false);
}

//hier wurde es nur zum Testen gesetzt
flag = new Boolean(false);
// flag in der Session ablegen
session
.setAttribute(Constants.ACCOUNT_CUSTOMER,
flag);

so und nun wollte ich in der jsp seite nach dem Flag fragen, ob es gesetzt ist oder nicht, falls doch wird der obere teil der jsp seite angezeigt falls nicht, der untere teil.
 

Neue Beiträge

Zurück