2012-04-05 76 views
2

我有一個自定義標籤,根本沒有任何身體。我試圖以編程方式更換空體,爲了簡單起見,Java自定義標籤包含生成的JSTL:不解釋

[<c:out value="SUCCESS!"/>] 

的目標是看到「[成功了!]」通過使用標記的JSP中顯示,但我看到的是「[ ]「,如果我查看生成的源代碼,我可以看到c:out語句寫在括號中的頁面上,但沒有解釋。

有沒有一種常見的方法來實現這一點?最終目標將是使用其他自定義標籤而不是「c:out」標籤。標籤/內容將來自數據庫。 我嘗試了SimpleTagSupport和BodyTagSupport的不同技術,但都沒有成功。事實上,我不確定技術上是否可以做到這一點,因爲當時標籤已經被解釋了。但是,那麼應該怎麼做呢?

回答

1

the JSP is translated into a servlet時,服務器標記(如自定義標記或JSTL標記)會轉換爲Java代碼。例如,下面的JSP代碼:

<c:out value="FooBar" /> 

被轉換爲類似這樣的Servlet中:

.... 
OutTag outTag = (OutTag) tagHandlerPool.get(OutTag.class); 
outTag.setPageContext(pageContext); 
outTag.setParent(null); 
outTag.setValue(new String("FooBar")); 
int evalOut = outTag.doStartTag(); 
.... 

在您的自定義標籤,你可以調用其他Java類/方法,能寫HTML代碼(不是JSP代碼)到響應。

[<c:out value="SUCCESS!"/>]沒有被解釋,因爲在這個級別它只是一個字符串,直接寫入響應。