对于stackoverflow.com上的一些问题,这是一个后续问题:
JSTL c:forEach causes @ViewScoped bean to invoke @PostConstruct on every request
Why does @PostConstruct callback fire every time even though bean is @ViewScoped? JSF
但是,我们使用的是Mojarra 2.1.22,但是我们的Seam 3 CDI @ViewScoped
注释bean总是被重建,这是用@PostConstruct
注释的方法被执行,我们每个都得到一个新的bean AJAX请求。
我持续听了几个月(现在是2014年2月)是Mojarra 2.1.18+修复了很多这些错误,当视图使用这个bean时,视图范围的bean应该能够在AJAX请求中存活下来<c:forEach items="#{mySeam3CdiViewScopedBean.items}" ... >
。
以下是一些错误:
https://java.net/jira/browse/JAVASERVERFACES-1665
https://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-928(&lt; - 请参阅dwightd的最后评论 - 我无法确认!)
https://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-787
https://java.net/jira/browse/JAVASERVERFACES-2688
我在顶部提到的示例的唯一区别是我们正在使用 Seam 3.1 Faces CDI @ViewScoped
(+ @Named
)而非“本机”JSF @ViewScoped
(+ @ManagedBean
)。
问题:
Seam 3 Faces(3.1 Final)之所以无法正常工作吗?
(我们如何才能找到?将我们所拥有的内容翻译成测试用例并不容易......也许有人知道?)
答案 0 :(得分:2)
关于你的问题的一些评论:
ui:repeat
是一种很好的做法您有两种解决方案(按优先顺序排列):
@ViewScoped
。您可以使用JBoss Wildlfy 8或Oracle Glassfish 4服务器轻松完成此操作。@ViewScoped
但在这两种情况下,尝试摆脱JSF页面中的JSTL,它是许多奇怪问题的根源。