这确实是JSF2中的错误。这是鸡肉问题。视图范围的Bean以JSF视图状态存储。因此,只有在恢复视图阶段之后,视图范围的Bean才可用。但是,JSTL标记在还原视图阶段运行,而视图范围的bean尚不可用。这将导致创建一个全新的视图范围bean实例,然后将其替换为存储在还原的JSF视图状态中的实际视图范围bean。
据报道,这是JSF问题1665和JSF规范问题787,该问题已针对JSF
2.2修复并移植回Mojarra 2.1.18。因此,只需升级到最低的Mojarra 2.1.18即可。
如果您不能升级,那么最好的选择是在请求/会话/应用程序范围的bean上专门使用JSTL标记,或者寻找满足特定功能要求的替代方法。您可以替换
<c:forEach>用
<ui:repeat>的你已经发现了。



