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