java.lang.NumberFormatException:尝试从clientId中提取rowIndex

时间:2014-04-09 13:31:33

标签: jsf jsf-2 primefaces

我正在使用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,这会删除此异常,但会向我的网页提出有关更新的其他问题。

你认为我做错了吗?或者这只是一个无法解决的案件? 提前谢谢。

0 个答案:

没有答案