2017-07-02 32 views
0

使用java lambda運算符時,我得到異常評估SpringEL表達式。在thymeleaf中使用java lambda函數運算符( - >)

例如:list.stream().map(a -> a.toString()).reduce("",(a,b) -> a+b)

+1

你爲什麼不在Java端評估這個語句的結果並將它傳遞給模板引擎? – Andrew

+0

我正在填充表,因此我需要爲每個迭代執行此操作。但我可以將此操作添加爲靜態方法並將該列表作爲參數傳遞。這種方法不會提供可維護的代碼。 –

+0

你不可能。看看你可以做什麼的參考:http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/expressions.html – Pau

回答

1

定義類似於下面的函數:

package com.mypackage; 
public class CollectorsMap { 
    public static final List<String> name(Stream<AbstractName> stream) { 
     return stream.map(v->v.getName()).collect(Collectors.toList()); 
    } 
} 

具有類似於下面的內容調用它(值是值的列表):

th:with="valueNames=${T(com.mypackage.CollectorsMap).name(values.stream())}" 

這將返回原始對象列表的名稱字段列表。