Status als Bild anzeigen lassen. Wie?

Status
Nicht offen für weitere Antworten.

rider

Aktives Mitglied
Hallo,
wie kann ich 2 verschiedene Bilder anzeigen lassen bei JSF?
Sprich: rot -> noch offen
grün -> erledigt

Für dies hab ich ein Enum in der Entity- Klasse:
Java:
	public enum Status
	{
		Erledigt,
		Offen		
	}

Wie stelle / wo programmiere ich das nun, dass wenn es auf ERLEDIGT gesetzt wurde ein grüner Button o.Ä. erscheint?
Bei OFFEN eben rot!
Prinzip sollte klar sein, oder?
 

rider

Aktives Mitglied
so wirklich viel kann ich damit leider nicht anfangen.
Könntest du das weiter erläutern (Beispielcode?)
 

Geeeee

Bekanntes Mitglied
Wenn schon core erwähnt wurde, wo es ja kein else gibt.
Beispielhaft:
Code:
<c:choose> 
  <c:when test="${status == Klasse.Status.OFFEN} > 
    <img rot />
  </c:when> 
  <c:otherwise> 
    <img gruen /> 
  </c:otherwise> 
</c:choose>
oder eben zwei c:if... finde ich bei entweder oder gerade total sinnlos. Vor allem warum überhaupt enum für 2 Werte, die doch auch boolean sein können. Wenn es natürlich noch mehr geben soll, dann bietet sich Enum an.
 
Zuletzt bearbeitet:

rider

Aktives Mitglied
Danke für die Antwort zunächst:
So habe ich jetzt:
Allerdings: passt das hier so?
test="${status == vorgang.status.Offen}

Auf was greift dies denn zu? Das greift doch auf die ManagedBean zu, oder?
Auf was wird denn hier genau verglichen?


[XML] <h:column id="Status">
<c:choose>
<c:when test="${status == vorgang.status.Offen} >
<h:graphicImage id="Offen" url="#{resource['images/offen.jpg']}" alt="Offen" />
</c:when>
<c:eek:therwise>
<h:graphicImage id="Erledigt" url="#{resource['images/erledigt.jpg']}" alt="Erledigt" />
</c:eek:therwise>
</c:choose>
</h:column>[/XML]
 

Terminator

Aktives Mitglied
Da kannste doch verschiedene Möglichkeiten nutzen:

1. Url für das Image Tag durch ne Bean Methode zurückliefern
2. Mehrere Image Tags über rendered Attribute steuern
3. Eigenen Renderer schreiben

Letzte ist am besten, vor allem wenn mans mehrfach einsetzt.
JSTL solltest nicht in ner JSF Page verwenden.
 

Prismapanda

Aktives Mitglied
Ich würde es bei einem Fall, wo es nur um die Anzeige unterschiedlicher Bilder geht, über JSF EL machen:

<h:graphicImage url="#{(bean.status eq 'offen') ? '/img/offen.jpg' : '/img/erledigt.jpg'}" />

Hoffe, dass geht, aber ich glaube ich habs so in etwa auch schonmal gemacht.
Sonst würd ichs halt über das rendered Attribut machen:

<h:graphicImage url="/img/offen.jpg" rendered="#{bean.status eq 'offen'}" />
<h:graphicImage url="/img/erledigt.jpg" rendered="#{bean.status eq 'erledigt'}" />

Damit könnten dann auch unterschiedliche Komponenten gemacht werden. Bspw. könnte beim Status offen ein commandButton genommen werden, der der es dann als erledigt markiert etc.
 

rider

Aktives Mitglied
Danke zunächste für eure Antworten.
Aber so ganz verstehe ich es noch nicht :/

So sieht nun die Seite aus:
[XML] <h:dataTable id="VorgangTabelle"
value="#{vv.vorgangliste}"
var="vorgang"
cellspacing="10"
rendered="#{not empty vv.vorgangliste}">

<h:column id="Vorgangs-ID">
<f:facet name="header">
#{msgVv['showVorgangDetails.id']}
</f:facet>
#{vorgang.id}
</h:column>

<h:column id="Status">
<h:graphicImage url="/img/offen.jpg" rendered="#{vv.vorgangstatus eq 'OFFEN'}" />
<h:graphicImage url="/img/erledigt.jpg" rendered="#{vv.vorgangstatus eq 'ERLEDIGT'}" />
</h:column>

</h:dataTable> [/XML]

1. so ganz passt das nicht, oder? Wie geht meint ihr das mit dem rendered?
2. muss "vorgangstatus" in der ManagedBean stehen? Kann ich auch über vv.vorgang.vorgangstatus gehen?

Erklärung:
vv = BeanName
private Vorgang vorgang;

vorgangstatus (in der Klasse vorgang):
Java:
public enum VorgangStatus
	{
		ERLEDIGT,
		OFFEN		
	}
	private VorgangStatus vorgangstatus = VorgangStatus.OFFEN;

3. was heißt dieses "eq" ?
 

Prismapanda

Aktives Mitglied
Dein Code sollte funktionieren. Du kannst die Eigenschaften der Beans natürlich ansprechen (solange es entsprechende Getter hat sogar bis zu einer beliebigen Tiefe also bean.eigenschaft.x.y.z etc.).
'eq' ist der Operator 'equals' in EL. 'ne' entsprechend 'not equals'. Ich bin mir nur nicht sicher, ob du einen enum mit einem String vergleichen kannst. Probiers doch einfach aus und guck obs passt :)
JSTL mag teilweise funktionieren und wird bspw. in einigen Facelets Tutorials verwendet, aber es gibt auch Gegenbeispiele, wo's halt nicht geht, deshalb sollte man sie nicht verwenden, wenns nicht auch anders geht^^
 

rider

Aktives Mitglied
nochmal zur Deutlichkeit:
vielleicht habe ich mich ein wenig falsch ausgedrückt:

Das ist in der ManagedBean
Java:
private Vorgang vorgang;

und das in der Entity - Klasse "Vorgang"

Java:
public enum VorgangStatus
    {
        ERLEDIGT,
        OFFEN       
    }
    private VorgangStatus vorgangstatus = VorgangStatus.OFFEN;


Jetzt nochmal: kann ich dies dann so aufrufen? Normalerweiße ja!
Java:
vv.vorgang.vorgangstatus

vv ist der Name der ManagedBean in der faces-config!
vorgang ist in der ManagedBean und greift nun auf das Attribut "vorgangstatus" in der Entity-Klasse zu!
Getter + Setter sind auch hier vorhanden.

Für "vorgangstatus" brauche ich keine Getter+Setter in der ManagedBean, oder?


Ob das mit dem "eq" auf Enums geht, weiß ich leider auch nicht.
 

rider

Aktives Mitglied
mein Server läuft noch nicht - daher kann ich es nicht testen!

Aber in der Klasse VORGANG sind doch die Getter + Setter von "vorgangstatus", reichen die nicht?
 

Prismapanda

Aktives Mitglied
Hab dich wohl falsch verstanden. Du brauchst in der ManagedBean den Getter natürlich nicht, wenn er in der Klasse Vorgang drin ist. Dann kannst du es wie von dir beschrieben handhaben.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
feinperligekohlensaeure JSF JSF + Tomcat 9 | HTTP Status 404 |(com.sun.faces.config.ConfigureListener?) Web Tier 1
O struts2: iterator status in name-Feld benutzen Web Tier 7
D HTTP 404 Status bei JSF Web Tier 5
2 JavaScript Status erkennen? Web Tier 3
Z Servlet Response HTTP-Status 200 wird nicht übertragen Web Tier 3
K Http Status Code abfragen Web Tier 8
Dimax Bild speichern und auf JSP zeigen Web Tier 74
M JSF Bild aus DB in JSF darstellen Web Tier 7
M Bild in derby DB speichern Web Tier 18
R Bild aus Datenbank ausgeben/anzeigen Web Tier 5
5 Bild Pfad Servlet Web Tier 2
V Bild aus ArrayList via h:graphicImage anzeigen lassen Web Tier 4
P Bild hochladen Web Tier 9
D Servlet Bild als JPG darstellen - nur alternativer Text Web Tier 16
T Bild durch anderes Bild ersetzen mit Servlet Web Tier 3
J h:graphicImage lädt kein Bild. Web Tier 3
D JSF Template mit Bild Web Tier 3
R Anzeigeproblem von Bild in Jsp Web Tier 5
S Bild hochladen mit JSP - Parameter übergeben Web Tier 4
Phash JSF - SelectOneMenu Property anzeigen Web Tier 3
B Berechnen und Anzeigen von Formeln aus der Chemie und Physik mit JSP und Bean Web Tier 14
P JSP Besucherinformationen anzeigen Web Tier 2
I Image temporär erzeugen und anzeigen? Web Tier 2
L GWT - Icon in Caption von DialogBox anzeigen? Web Tier 2
J a4j-MediaOutput / Seam 2.1 : jpg lassen sich nur bis 5 KB anzeigen Web Tier 3
I JSF Nur max 20 Datensätze anzeigen lassen, dann nächste Seite Web Tier 8
R Felder nicht anzeigen lassen! Wie geht das? Web Tier 4
E JSF Datatable erst nach Buttonklick anzeigen Web Tier 2
E JSF Datatable leere Zellen anzeigen Web Tier 2
H [MySQL, Servlet] Blob anzeigen Web Tier 5
remus outputText keine 0 anzeigen Web Tier 3
H Vorgehensweise: Bilder anzeigen/erstellen in JSP/Servlet ? Web Tier 3
M Bei Weiterleitung von Servlet zu JSP: URL der JSP anzeigen Web Tier 6

Ähnliche Java Themen

Neue Themen


Oben