2011-11-22 156 views
10

我有一個自定義JSP標記,它使用的是一個枚舉參數。這種方法是使用其他需要此枚舉的類的結果。問題的關鍵是我不知道如何在EL分配枚舉值:在JSP中將枚舉值作爲標記屬性傳遞

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

,我發現迄今是使enumParam一個整數,將其轉換爲所需的值唯一的解決方法:

<mytaglib:mytag enumParam="3" /> 

我相信一定有更好的方法來做到這一點。請幫忙。

回答

12

EL允許使用Enums!

有三種方式來設置一個標記屬性值使用任一個rvalue或左值表達式:
[..]

由於只有文本:

<一些:標記值=「sometext 「/ >

該表達式被稱爲文字表達式。在這種情況下,屬性的String值被強制爲屬性的預期類型。文字值表達式具有特殊的語法規則。有關更多信息,請參見文字表達式。當標籤屬性具有枚舉類型時,該屬性使用的表達式必須是文字表達式。例如,標籤屬性可以使用表達式「hearts」來表示Suit.hearts。字面被強制爲適合,並且屬性獲得值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不支持訪問枚舉。你應該考慮使用字符串。

例子:

public Enum Color{ 
    READ, BLUE, GREEN 
} 

可以傳遞字符串添加到自定義標籤象下面這樣:

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

在您的自定義標籤你得到的枚舉值是這樣的:

Color.valueOf("RED"); 
+2

在devpg的評論中顯示支持枚舉。而且我也可以確認他的解決方案有效。 –

+0

同意彼得。這是不正確的。在你的例子中,'enumParam =「$ {'BLUE'}」'會工作得很好。 – dgrundel