我想返回ArrayList<HashMap<String,String>>
EL函數中有三個String參數。怎麼做?el function with generic ArrayList返回類型和參數
3
A
回答
3
其實我覺得EL函數返回一些複雜對象是完全合理的。當然,還有一些「架構風格」的問題可能會決定什麼會適合這樣的事情,但我想說一個很好的例子是用於返回某些不是用於配置信息的工具特定於任何特定操作,對後端業務邏輯不太感興趣,並可能在許多頁面上用於演示目的。
要做到這一點,你想要的是一個返回「Object」或者「Object []」的EL函數。你不能在你的EL聲明中使用Java泛型(在你的.tld文件中),但這並不重要,因爲EL環境無論如何都會輸入嗅探。你會做在一個類中聲明公共靜態函數的地方:
public static Object yourFunction(String arg1, String arg2, String arg3) {
// code code code
return (ArrayList<HashMap<String, String>>) whatever;
}
在你.TLD文件,你就會有這樣的事情:
<function>
<description>Blah blah blah</description>
<name>yourFunction</name>
<function-class>your.package.YourClassName</function-class>
<function-signature>
java.lang.Object yourFunction(java.lang.String, java.lang.String, java.lang.String)
</function-signature>
</function>
在你的JSP,你」 d訪問這樣的功能:
<c:set var='result' value='${prefix:yourFunction("Goodbye", "Mr.", "Chips")}'/>
5
您可以在你的TLD使用複雜的返回類型了。例如。這將工作:
public static List<Map<String, String>> func(String arg1, String arg2,
String arg3) {
List<Map<String, String>> out = new ArrayList<HashMap<String, String>>();
// code code code
return out;
}
在你.TLD文件,你必須把這個:
<function>
<description>Blah blah blah</description>
<name>func</name>
<function-class>your.package.YourClassName</function-class>
<function-signature>
java.util.List<java.util.Map<java.lang.String,java.lang.String>> func(java.lang.String,java.lang.String,java.lang.String)
</function-signature>
</function>
注意事項:由於在這個例子中,尖括號都必須適當XML轉義。函數簽名不得行封裝。非一元泛型,如Map<String,String>
,不能用作參數。 (可能是一個令牌化錯誤。)您將不得不使用原始類型。
相關問題
- 1. EL和協變返回類型
- 2. 推導其參數的返回類型函數返回類型
- 3. 返回std :: function函數的返回類型
- 4. Swift通用參數和返回類型
- 5. GWT @UiFactory和參數化返回類型
- 6. 確定std :: function的返回類型
- 7. 返回任何類型的ArrayList
- 8. 如何獲取函數的參數類型和返回類型?
- 9. HQL ArrayList返回多個類的類型
- 10. 參數化參數化方法的返回類型
- 11. SQL Server 2008 - UDF參數類型和返回類型
- 12. 存儲方法的返回類型和參數類型
- 13. 參數類型或返回類型作爲參數?
- 14. 泛型方法返回超類型的類型參數和方法參數類型參數
- 15. ArrayList Generic without Type
- 16. C# - 函數的返回類型與參數的返回類型相同
- 17. TypeScript返回參數的類型
- 18. MyBatis和泛型:返回類型ArrayList <?擴展MyClass的>返回空值
- 19. actionscript中的泛型(返回類型與參數類型相同)
- 20. 從函數返回類型推斷模板參數類型
- 21. 從meta-pc組件獲取函數參數類型和返回的類型
- 22. Can Generic Class是方法/返回類型嗎?
- 23. 函數沒有參數和返回類型OCaml
- 24. WCF中帶接口類型參數的泛型返回類型
- 25. curl_setopt with CURL_POSTFIELDS參數返回false
- 26. 帶返回值類型的參數不是第一個參數,或者返回值類型有多個參數
- 27. 返回參數的類型名查詢
- 28. 宏返回類型取決於參數
- 29. 返回與參數不同的類型
- 30. 通過參數決定投型和返回類型
+1爲介紹性文字。不過,我會感興趣的是他需要什麼。我無法想象任何有效的現實世界理由。無論何時這些值已經在JSP中硬編碼了,爲什麼要將它轉換爲另一個Java對象?或者當這些值是動態的,爲什麼你不抓取一個servlet或bean來預處理它? – BalusC 2010-02-21 16:37:23
我不知道。在大多數情況下,可能會有一個bean使用,但是誰知道?最初的問題是關於如何設置EL功能。無論如何,通過EL函數可以更快更清晰地獲得bean,相比'',它會在每個使用它的頁面中定義類名。 –
Pointy
2010-02-21 19:06:11
不支持泛型,但返回類型應該是函數簽名中的java.util.List和方法簽名中的List。 – BacMan 2010-02-22 17:58:55