使用动态可见的 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);
怀疑检票口...我正在使用 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);