我正在开发一个应用程序,我必须将它从Glassfish v2迁移到Glassfish v3。该应用程序基于IceFaces框架。为此,我们在使用Icefaces 1.8.2
时也转向了Icefaces 3.3.0它在迁移之前工作,但是现在当我生成数据表时,如果我刷新页面(通过单击应用程序中的按钮)而没有:
总而言之,组件数据表在第一次使用时可以正常工作,但是如果我在不更改数据表的情况下修改页面中的另一个JSF组件,我就会有一个堆栈跟踪:
2014-12-16T10:27:26.449+0100|Grave: JSF1007 Duplicate component ID form : composite:j_ id123 found in view.
2014-12-16T10:27:26.449+0100|Grave: +id: j_id123
[…]
+id: j_id122
type: com.icesoft.faces.component.ext.UIColumn@76a457d5
+id: j_id123
type: com.icesoft.faces.component.ext.HtmlOutputText@1f829dcd
+id: j_id123
type: com.icesoft.faces.component.ext.HtmlOutputText@38460de4
+id: j_id124
type: com.icesoft.faces.component.ext.UIColumn@7f3a1098
+id: j_id125
type: com.icesoft.faces.component.ext.HtmlOutputText@3d17ac69
+id: j_id125
[…]
这就是数据表的声明在.xhtml中的方式:
<ice:panelGroup styleClass="iceFrm" style="overflow: auto;width: 802px;max-width: 802px; height: 440px; max-height: 440px;" rendered="#{requeteurSql.baseDeDonnees != null}">
<ice:dataTable id="tableau" rendered="#{not empty requeteurSql.resultat}" value="#{requeteurSql.resultat}" var="currentRow" rows="#{requeteurSql.nbLigneResultat}" binding="#{requeteurSql.resultatBinding}">
<f:facet name="header">
<ice:columnGroup>
<ice:headerRow binding="#{requeteurSql.headerBinding}">
</ice:headerRow>
</ice:columnGroup>
</f:facet>
</ice:dataTable>
</ice:panelGroup>
这是不可理解的,因为尽管进行了迁移,但我没有更改代码的语料库,而且它之前正在运行。正如Icefaces的文档中所建议的那样,我将注释@RequestScoped转换为@ViewScoped。但是这两个我仍然有我的身份麻烦。 我觉得这是一个回归,但我不知道如何解决它。我有可能忘记设置一个参数吗?
有人有任何想法吗?
提前致谢
答案 0 :(得分:0)
我们遇到了从1.8.2迁移到3.3的问题
问题似乎有所增加,然后您使用binding
将您的组件链接到后端实现
我真的没有办法解决抱歉
经过大量调查后,我们不得不以另一种方式重新实施。