2009-05-10 15 views
1

ユニ・アサインの場合、私はポーカーをするためにJSF webappをやっています。プレーヤーの手札にあるカードは画像によって表示されます。関連する画像のURLにカードスーツ/ランクをマッピングする「最もクリーンな」方法は何でしょうか?JSFで画像URLを生成する場所はどこですか?

私は現在、Card#toStringが返すものを使用するか、バッキングビーンでこれを処理するかのどちらかを使用しています。モデルまたはコントローラのどちらもこれを処理するための正しい場所ではないようです。

あなたはURLを生産に対して設定されている場合(この質問はやや主観的であるが、その後、再び、そのすべてのデザインの質問がある。私は私はむしろ議論よりも逃したいくつかの明白な解決策を探しています。)

+1

なぜ静止画像を使用しないのですか? s2.jpg(2つのスペード)、ca(クラブのエース)など... –

+0

実際の画像リソースの名前は静的です。モデルが文字列にどのように強制するか、ビューが私に迷惑をかけるかどうかの依存関係だけです。 – millimoose

答えて

1

バッキングBeanで、あなたが翻訳を行うためにEL functionを使用することができます。

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

そのように、あなたのバッキングBeanは、直接カードクラスのインスタンスを返すことができます(私はそれが列挙であると推定)と機能がマップされますそれを画像URLに追加します。関数の実装方法の例は、this answerにあります。 FacesContext.getCurrentInstance().getExternalContext()を参照する必要があります。画像との相対的なディレクトリに関係なく有効なURLを作成する必要があります(h:graphicImageが私の頭の上から使用するルールを覚えていません)。

+0

これは特にそうではありませんが、私の脳は背中の豆を見ると "コントローラー"と思っていますが、これはビューの問題のようです。 EL関数はこれを置くのに十分な場所のように見えます。 – millimoose

関連する問題