2011-11-22 20 views
10

私は列挙型のパラメータを使用しているカスタムJSPタグを持っています。この方法は、この列挙を必要とする他のクラスを使用することの結果です。ポイントは、私がELに列挙値を割り当てる方法を見当もつかないです:JSPのタグ属性として列挙型の値を渡す

<mytaglib:mytag enumParam="${now what do I type here?}" /> 

私がこれまでに見つかった唯一の回避策はenumParam整数にし、所望の値に変換することでした:

<mytaglib:mytag enumParam="3" /> 

私はそれを行うより良い方法が必要であると信じています。助けてください。

答えて

12

ELではEnum!を使用できます。右辺値または左辺値式のどちらかを使用してタグの属性値を設定するには、3つの方法があります

<一部:タグ値= "sometextテキストだけで
[..]

"/ >

この式はリテラル式と呼ばれます。この場合、属性のString値は属性の予想される型に変換されます。リテラル値式には特別な構文規則があります。詳細については、リテラル式を参照してください。タグ属性にenum型がある場合、その属性が使用する式はリテラル式でなければなりません。たとえば、タグ属性では、 "hearts"という表現を使用してSuit.heartsを意味することができます。リテラルはSuitに強制され、属性はSuit.heartsという値を取得します。

http://download.oracle.com/javaee/5/tutorial/doc/bnahq.html

列挙型:

public Enum Color{ 
    RED, BLUE, GREEN 
} 

JSP /タグファイル

<mytaglib:mytag enumParam="${'RED'}" /> 

は、Tomcat 7.0.22と同様に桟橋6.1.26でテストされています。

+0

Tomcat 6.0でも動作することがテストされています。 – Bass

-1

ELはEnumにアクセスできません。文字列の使用を検討する必要があります。

例:

public Enum Color{ 
    READ, BLUE, GREEN 
} 

あなたは以下のようなカスタムタグに文字列を渡すことができます。

Color.valueOf("RED"); 
:カスタムタグで

<mytaglib:mytag enumParam="RED" /> 
OR 
<mytaglib:mytag enumParam="${obj.color}" /> 

を次のように列挙値を取得

+2

devpgのコメントでは、enumがサポートされていることを示しています。彼の解決策が働いていることを確認することもできます。 –

+0

ピーターと合意。これは正しくありません。あなたの例では、 'enumParam =" $ {'BLUE'} "'はうまくいくでしょう。 – dgrundel