使用动态可见的 DataView 组件迭代时出错

Error When iterate over with a DataView component that is dynamically visible

怀疑检票口...我正在使用 DataView 并发布以下错误:

"... Expected close tag is' <td wicket: id =" lblRowspan "> 'Possible attempt to embed component (s)' <input type =" text "placeholder =" Item "wicket: id =" txtNomeBem "class = "form-control" /> 'in the body of this component Which discards its body ... "

情况如下,在这个 DataView 中,我正在使用 ROWSPAN 合并一些单元格,如果我正在混合的行中没有任何类型的组件,则 100% 效果很好,例如,如果我m 使用 rowSpan 写一个句子作品。 .. 但是当我在单元格中插入 TextField 组件时却没有。

在我正在开发的应用程序中需要显示一个 TextField 以便用户输入一些信息,只是它总是抛出指出的异常。

这是我的代码: (html)

<tr wicket:id="dataGruposSelecionados">
    <td wicket:id="lblRowspan">
        <input type="text" placeholder="Item" wicket:id="txtNomeBem"
               class="form-control" />
    </td>
<tr/>

这是我的java

dataViewGruposSelecionados = new DataView<ItemBemDto>("dataGruposSelecionados", new Provider(listaDeGrupos)) {

            @Override
            protected void populateItem(Item<ItemBemDto> item) {    

    Label lblRowspan = new Label("lblRowspan",item.getModelObject().getNomeItemGrupo());
.
.
.
    int tamanho = listaBens.size();
    if(primeiroLoop)
    {                    
        lblRowspan.add(new AttributeAppender("rowspan", new Model<Integer>(tamanho), " "));
         primeiroLoop = false;
     }else{
         lblRowspan.setVisible(false);
     }
.
.
.
.
    item.add(lblRowspan);
    item.add(newTextFieldNomeItem(item));
  }
}

如我所说,如果我将其留空或在 HTML 中输入内容而不是 TextField,它可以 100% 工作,合并工作...但是当我在 [=25] 中插入任何组件时=] 抛出异常 ...

<tr/> 应该是 </tr>

我找到了答案:) . 我创建了一个接收 ROWSPAN 的 WebMarkupContainer,而不是控制 'rowspan' Dataview 的标签……好吧,在我找到的 HTML 和 java 解决方案下面。

<td wicket:id="containerRowspan">
    <div wicket:id="panelNomeGrupo">
        <input type="text" placeholder="Item" wicket:id="txtNomeBem" class="form-    control" />
    </div>
</td>

代码Java:

     WebMarkupContainer containerRowspan = new WebMarkupContainer("containerRowspan");

     int tamanho = listaComTodosBens.size();

     if(primeiroLoop || !item.getModelObject().getNomeItemGrupo().equalsIgnoreCase(nomeAnterior)){
           containerRowspan.add(new AttributeAppender("rowspan", new Model<Integer>(tamanho), " "));
          primeiroLoop = false;
        }else{
           containerRowspan.setVisible(false);
        }

     PanelNomeItem panel=new PanelNomeItem("panelNomeGrupo", item);
     panel.setVisible(mostrarPainel);
     containerRowspan.add(panel);
     item.add(containerRowspan);