我正在使用Mojarra 2.2.5和Primefaces 4.0开发动态表单,我需要实现具有动态内容的数据表。不幸的是,当我尝试提交表单时出现此错误:
java.lang.NumberFormatException: Trying to extract rowIndex from clientId 'id_of_my_datatable:j_id1:j_id1'
我使用它生成数据表,受Primefaces Showcase(http://primefaces.org/showcase/ui/datatableDynamicColumns.jsf)和(Stack Overflow discussion)
的启发 private DataTable addList(UIComponent parent, String labelStr, String id, List<ColumnModel> rowItems, List<Map<String, String>> values, String styleClass,
boolean isRequired, String updateComponents)
{
OutputPanel outputPanel = new OutputPanel();
outputPanel.setStyleClass("question_panel col-md-11");
if (labelStr != null)
{
addLabel(outputPanel, id, labelStr, "component_label col-md-11");
}
DataTable dataTable = new DataTable();
dataTable.setValue(values);
//mapModel = values;
//ValueExpression veTable = super.createValueExpression("#{composerTestBean.mapModel}", List.class);
//dataTable.setValueExpression("value", veTable);
dataTable.setVar("model");
dataTable.setId(id);
dataTable.setRowIndexVar("rowIndex");
Columns columns = new Columns();
columns.setValue(rowItems);
//columnModel = rowItems;
//ValueExpression veColumns = super.createValueExpression("#{composerTestBean.columnModel}", List.class);
//columns.setValueExpression("value", veColumns);
columns.setVar("column");
columns.setColumnIndexVar("colIndex");
HtmlOutputText headerText = new HtmlOutputText();
ValueExpression veHeader = super.createValueExpression("#{column.header}", String.class);
headerText.setValueExpression("value", veHeader);
columns.getFacets().put("header", headerText);
HtmlOutputText valueText = new HtmlOutputText();
ValueExpression veValue = super.createValueExpression("#{model[column.property]}", String.class);
valueText.setValueExpression("value", veValue);
columns.getChildren().add(valueText);
dataTable.getChildren().add(columns);
outputPanel.getChildren().add(dataTable);
parent.getChildren().add(outputPanel);
return dataTable;
}
正如您所看到的,我还尝试使用valueExpression和属性bean绑定,但没有任何改变。 setRowIndexVar()
和setColumnIndexVar()
方法只是尝试解决问题。
我还读到它可能是this discussion上的Mojarra错误(它应该被解决)而另一个是Primefaces bug(我不能在项目库上应用补丁)
此外,我尝试关注this post,这会删除此异常,但会向我的网页提出有关更新的其他问题。
你认为我做错了吗?或者这只是一个无法解决的案件? 提前谢谢。