2009-05-10 4 views
1

Für eine Uni-Aufgabe mache ich eine JSF-Webapp, um Poker zu spielen. Karten in der Hand eines Spielers werden durch Bilder angezeigt. Was wäre der "sauberste" Weg, den Kartenantrag/Rang der URL des zugehörigen Bildes zuzuordnen?Wo sollten generierende Bild-URLs in JSF behandelt werden?

Ich lehne mich derzeit entweder mit dem, was auch immer Card # toString zurückgibt, oder mit dem Backbohne, es ist nur, dass weder das Modell noch der Controller der "richtige" Ort ist, um damit umzugehen.

(Diese Frage ist etwas subjektiv, aber dann wieder, so ist jedes Design Frage. Ich bin für einige offensichtliche Lösung, die ich verpasst, anstatt eine Diskussion.)

+1

Warum verwenden Sie nicht nur statische Bilder? s2.jpg (2 von Spaten), ca (Ace of Clubs), etc ... –

+0

Die Namen der tatsächlichen Bildressourcen sind statisch. Es ist nur so, dass die Abhängigkeit zwischen der Art, wie das Modell zu einem String gezwungen wird, und der Ansicht, die mich nervt. – millimoose

Antwort

1

Wenn Sie gegen die Herstellung der URL festgelegt werden in einem Träger Bohne, könnten Sie eine EL function zu tun, um die Übersetzung verwenden:

<h:graphicImage value="#{fnlib:getImageUrlFor(myBean.cardInstance)}" /> 

auf diese Weise Ihre Begleitband Bohnen die Karte Klasseninstanz zurückgeben kann direkt (ich vermute, es ist ein enum) und die Funktion der Karte es zu einer Bild-URL. Ein Beispiel für die Implementierung der Funktion finden Sie unter this answer. Sie müssen müssen FacesContext.getCurrentInstance().getExternalContext() betrachten, wenn Sie eine URL erstellen wollen, die gültig sein wird, egal welches Verzeichnis Ihre JSP in Bezug auf die Bilder ist (ich kann mich nicht erinnern, welche Regeln h:graphicImage verwendet von der Spitze meines Kopfes).

+0

Nicht besonders dagegen, es ist nur, dass mein Gehirn "Controller" denkt, wenn es Backing-Beans sieht, während dies mehr wie ein Sichtproblem scheint. Eine EL-Funktion sieht wie ein guter Ort aus, um dies zu setzen. – millimoose