2011-09-12 52 views
0

我試圖用一個自定義的內部變量的屬性Struts標籤類似如下 -變量在Struts的自定義標籤

for(String currentMacro : (List<String>)(request.getAttribute("individualMacros"))) { 
    name = currentMacro.<some-operation> 

<html:mce name = "hmtl_<%= name %>" /> 

這樣的事情。但是<%= name%>沒有被替換爲變量值。它在我使用帶有純HTML標記的變量時起作用。

在這種情況下是否有任何方法可以實現這一點?

謝謝。

回答

1

使用JSP EL(假設使用JSP 2.0,並將「name」放入作用域中)。您也可以檢查TLD是否允許rtexprs。

<html:mce name="html_${name}"/>

但爲什麼用小腳本?很少有(是?)一個很好的理由。

+0

感謝您的回覆。我如何將Java變量放在範圍中以便像上面提到的那樣使用它? – Siddharth

+0

用'request.setAttribute(「name」,name);' –

+0

謝謝戴夫。有效。 – Siddharth

0

由於我們正在對一個自定義標籤,我的猜測是,在TLD文件有不rtexprvalue選項設置爲true特定標記屬性:

<attribute> 
    <name>name</name> 
    <rtexprvalue>true</rtexprvalue> 
    ....... 
</attribute> 

rtexprvalue指定屬性值可以在運行時動態評估。

如果設置爲「false」,則表示該屬性具有一個靜態值,其值爲translation;如果設置爲「真」,則意味着該值可以在運行時動態確定。默認值是「false」。

如果scriptlet不起作用,最有可能意味着rtexprvalue爲false。如果您無權改變這一點,那麼表達式將不適用於該特定屬性。

+0

我試過這樣做,但它仍然無法正常工作。該名稱中的<%= %>不會評估 - 」/>。 – Siddharth