3
我有一个问题,使用HtmlDataTable查看数据库中的数据。h:dataTable绑定=>重复ID
当我创建组件时,该表有时(并非总是)列数的两倍。
它显示正确,并经过多次刷新(无需移动dtb或东西)有例如6列而不是3和应用程序(有时)变得不稳定。 这段时间以来,因为它会报告 “副本ID的一个组成部分” 我不能与表工作..
简单的例子(来源:http://balusc.blogspot.com/2006/06/using-datatables.html):
<h:form id="bde">
<h:dataTable id="tbl"
binding="#{myBDE.dataTable}"
value="#{myBDE.dataList}"
var="bdeItem">
<h:column>
<f:facet name="header">
<h:outputText value="S" />
</f:facet>
<h:outputText value="#{bdeItem.s}" rendered="#{!myBDE.editModeRow}"/>
<h:inputText value="#{bdeItem.s}" rendered="#{myBDE.editModeRow}" required="true" size="3"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="ID" />
</f:facet>
<h:outputText value="#{bdeItem.id}"/>
</h:column>
</h:dataTable>
</h:form>
而且的java.class
protected HtmlDataTable dataTable;
public void setDataTable(HtmlDataTable dataTable)
{
this.dataTable = dataTable;
}
public HtmlDataTable getDataTable()
{
if (dataTable == null)
{
dataTable = new HtmlDataTable();
dataTable.setRows(DEFAULT_TABLE_ROWS);
}
return dataTable;
}
和错误消息:
javax.servlet.ServletException: Component ID j_idt92:bde:tbl:j_idt129 has already been found in the view.
javax.faces.webapp.FacesServlet.service(FacesServlet.java:422)
root cause
java.lang.IllegalStateException: Component ID j_idt92:bde2:tbl:j_idt129 has already been found in the view.
com.sun.faces.util.Util.checkIdUniqueness(Util.java:821)
com.sun.faces.util.Util.checkIdUniqueness(Util.java:805)
com.sun.faces.util.Util.checkIdUniqueness(Util.java:805)
com.sun.faces.util.Util.checkIdUniqueness(Util.java:805)
com.sun.faces.util.Util.checkIdUniqueness(Util.java:805)
com.sun.faces.util.Util.checkIdUniqueness(Util.java:805)
com.sun.faces.application.view.StateManagementStrategyImpl.saveView(StateManagementStrategyImpl.java:144)
com.sun.faces.application.StateManagerImpl.saveView(StateManagerImpl.java:133)
com.sun.faces.application.view.WriteBehindStateWriter.flushToWriter(WriteBehindStateWriter.java:225)
com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:418)
com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:410)
关注由组件树编辑。 我没有什么重复的代码,但dataTable创建一个新的列,然后它真的重复
我有两个工作相似的模块,第三没有工作。
你有没有遇到过这种问题?
感谢意见
你救了我(再次)。我花了整整一天的时间,没有任何东西。现在它的工作!谢谢,BalusC – gaffcz 2011-04-29 20:24:47
我希望,已经完成了。再次感谢! – gaffcz 2011-04-29 20:36:04
BalusC,在更改范围请求后,我无法再使用DataTable(保存,编辑,删除,添加到dtb)。它报告空异常,因为对象在响应后到期。以某种方式我可以使用吗?我试图使用ViewScope,但它似乎不与绑定HtmlDataTable。或者有另一种方法来解决它?或者我应该尝试使用DataModel? –
gaffcz
2011-04-30 09:05:13