使用动态可见的DataView组件进行迭代时出现错误

时间:2015-12-04 20:23:15

标签: html merge wicket textfield dataview

怀疑检票口......我正在使用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%效果很好,例如,如果我正在使用的行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));
  }
}

正如我所说的,如果代替TextField它可以100%工作我将它留空或在HTML中输入内容,合并工作...但是当我在'td'中插入任何组件时抛出异常..

2 个答案:

答案 0 :(得分:0)

<tr/>应为</tr>

答案 1 :(得分:0)

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

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

Code 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);