2014-07-25 70 views
3

我在嘗試在managed bean內部使用java 8 lambda時遇到問題。根據我使用的lambdabean返回nulljava 8 lambda和JSF managedBean

我正在使用一個非常簡單的lambda調用forEach中的方法。

當我在一個簡單的Java項目來測試它,它工作正常,但bean裏面不起作用:

usuarios.forEach(u -> u.tornaModerador()); 

上面的代碼工作的一個簡單的Java項目中。下面的代碼不使用JSF 2.2與Java 8工作:

getAllauth().forEach(a -> a.activateAuth()); 

這是同樣的事情。這兩個Java對象都是正確的。 BTW,getAllauth()方法不是null

並非所有的lambda都不在託管bean內工作。以下工作正常:

appAuthList.removeIf(a -> !a.getApp().equalsIgnoreCase(getApp().getApp()) || a.getAuth().equals("READ")); 

我已經更新javaassist

+2

我有一個問題,理解什麼是行不通的。首先你寫了一些bean返回null,然後表達式'usuarios.forEach(u - > u.tornaModerador());'不起作用。這是否意味着u.tornaModerador()永遠不會被調用?如果這樣做,當你用簡單的'for'循環替換forEach?也許usuarios是空的。 –

+0

我也不能讓lambda在託管bean內工作。 – Makoto

回答

4

我也遇到了這個問題,並發現它是JSF掃描註釋的方式時出現問題。最近對JSF的更新(到2.3.0)似乎已經解決了這個問題。如果您有興趣,Here是錯誤報告。

+0

查看克隆問題https://java.net/jira/browse/JAVASERVERFACES-3835,它在Mojarra 2.2.11中設置了固定版本。至少這個版本固定在我的情況。 – mrod