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

Html 使用动态可见的DataView组件进行迭代时出错,html,merge,wicket,textfield,dataview,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

怀疑小门。。。我正在使用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 ... "
“…预期的关闭标记是”“可能尝试将组件”“嵌入此组件的主体中,从而丢弃其主体…”
在这个数据视图中,情况如下:我使用ROWSPAN合并一些单元格,如果我混合的行中没有任何类型的组件,100%都可以正常工作,例如,如果我使用ROWSPAN编写句子的行可以正常工作。。但是当我在单元格中插入TextField组件时,它就不起作用了

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

这是我的密码: (html)


这是我的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));
  }
}
dataviewgruposelecionados=newdataview(“datagruposelecionados”,新提供者(listaDeGrupos)){
@凌驾
受保护的无效填充项(项){
Label lblRowspan=新标签(“lblRowspan”,item.getModelObject().getNomeItemGrupo());
.
.
.
int-tamanho=listaBens.size();
if(primeiroop)
{                    
lblRowspan.add(新属性pender(“rowspan”,新模型(tamanho),”);
PrimeIRoop=false;
}否则{
lblRowspan.setVisible(假);
}
.
.
.
.
添加项目(lblRowspan);
项目.增加(新文本字段名称项目(项目));
}
}
正如我所说,如果我将文本字段留空或键入HTML格式的内容,合并将100%起作用。。。但是,当我在“td”中插入任何组件时,会引发异常…

应该是

我找到了答案:) . 我创建了一个WebMarkupContainer来接收rowspan,而不是一个标签来控制“rowspan”。。。下面是我找到的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);
webmarkupcontainerrowspan=新的WebMarkupContainer(“containerRowspan”);
int tamanho=listaComTodosBens.size();
if(primeiroLoop | |!item.getModelObject().getNomeItemGrupo().equalsIgnoreCase(nomeQuery)){
containerRowspan.add(新属性pender(“rowspan”,新模型(tamanho),”);
PrimeIRoop=false;
}否则{
containerRowspan.setVisible(false);
}
PanelNomeItem panel=新的PanelNomeItem(“panelNomeGrupo”,项目);
面板设置可见(mostrarPainel);
containerRowspan.add(面板);
添加项目(containerRowspan);

我可能错了;但您的代码表明lblRowSpan是父项,而文本字段txtNomeBem是子项。这就是将文本字段添加到方法newTextFieldNomeItem(item)中的方式吗?只是好奇。就像我说的,这个数据视图的第一列将根据一个规则合并,在这个例子中,我放弃了它。让我们假设我在数据视图中有4行,并与之合并,这四行将包括一个文本字段。。正如我所说的,合并工作非常完美,当我试图包含一个文本字段时,会抛出异常,这个单元格合并了。LblRowspan是父亲,是将接受“rospan”指令的标签(并且成功了)。。。。“txtNomeBem”是“newTextFieldNomeItem(item)”,是必须显示在进行合并的列中的组件,是一个简单的文本字段,位于下面的代码文本字段之后:。私有TextField newTextFieldNomeItem(Item Item){TextField field=newtextfield(“txtNomeBem”newpropertyModel(Item.getModelObject(),“nomeItemGrupo”);field.add(StringValidator.maximumLength(200));返回字段;}
     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);