Wicket 如何访问不带';I don’我没有门卫

Wicket 如何访问不带';I don’我没有门卫,wicket,Wicket,我是wicket的新手,请有人帮我想一想。我有一个关于复选框显示或不显示的逻辑。 问题: 当不显示复选框的逻辑处于启用状态时(即通过在代码中动态地向checkbox元素添加display:none),由于复选框周围有td,因此会出现空白 我的html看起来像 <span wicket:id="checkgroup"> <table> <tr wicket:id="srow" > <td><input type="checkbox" wicke

我是wicket的新手,请有人帮我想一想。我有一个关于复选框显示或不显示的逻辑。 问题: 当不显示复选框的逻辑处于启用状态时(即通过在代码中动态地向checkbox元素添加display:none),由于复选框周围有td,因此会出现空白

我的html看起来像

<span wicket:id="checkgroup">
<table>
<tr wicket:id="srow" >
<td><input type="checkbox" wicket:id="scheck"/></td>
<td><img wicket:id="sicon"></img></td>
</tr>
</table>
</span>

因此,在代码中,我使用if-else逻辑添加display:none-to-check-box元素,该元素从视图中删除复选框,如下所示

<span wicket:id="checkgroup">
<table>
<tr wicket:id="srow" >
<td><input type="checkbox" wicket:id="scheck" style="display:none"/></td>
<td><img wicket:id="sicon"></img></td>
</tr>
</table>
</span>                     

final CheckGroup<Scope> checkGroup = new CheckGroup<>("checkGroup", 
new ArrayList<> ());    
ListView<Scope> listView = new ListView<Scope>
("srow", sList); 
@Override
protected void populateItem(final ListItem<S> item)
{
  Check<S> check = new Check<>("scheck", item.getModel(), checkGroup);
  if(defaultscope)
  {
     check.add(new AttributeModifier("style","display:none"));
  }
  item.add(check);
} 

最终检查组检查组=新检查组(“检查组”,
新ArrayList());
ListView ListView=新建ListView
(“srow”,sList);
@凌驾
受保护的无效填充项(最终列表项)
{
Check Check=新检查(“scheck”,item.getModel(),checkGroup);
如果(默认范围)
{
选中。添加(新属性修改器(“样式”,“显示:无”);
}
项目。添加(检查);
} 
所以现在我的复选框消失了,但周围的td保持不变,并导致显示屏出现空白

关于如何处理这个问题的任何想法

谢谢

如果引用的子项不存在,可以使用
删除html

populateItem中的代码可能如下所示:

Check<S> check = new Check<>("scheck", item.getModel(), checkGroup);
  if(defaultscope)
  {
     check.setVisible(false);
  }
  item.add(check);
<tr wicket:id="srow" >
<wicket:enclosure>
  <td><input type="checkbox" wicket:id="scheck"/></td>
</wicket:enclosure>
<td><img wicket:id="sicon"></img></td>
</tr> 
Check Check=new Check(“scheck”,item.getModel(),checkGroup);
如果(默认范围)
{
检查设置是否可见(错误);
}
项目。添加(检查);
您的标记如下所示:

Check<S> check = new Check<>("scheck", item.getModel(), checkGroup);
  if(defaultscope)
  {
     check.setVisible(false);
  }
  item.add(check);
<tr wicket:id="srow" >
<wicket:enclosure>
  <td><input type="checkbox" wicket:id="scheck"/></td>
</wicket:enclosure>
<td><img wicket:id="sicon"></img></td>
</tr> 


如果您想隐藏显示:none,请将其移动到td。但是我没有wicket:id,无法在java端访问它。我想这个可以帮你。getParent()-您必须深入了解它-文档中可能有解释。当然。。非常感谢:)将尝试它..您尝试过item.setVisible(false)吗?我不是100%确定,但这应该会删除所有行标记。只是尝试将其封装在WebMarkupContainer中,效果良好。我也要试试这个附件。。谢谢大家帮助我。是的。。我也工作了。非常感谢。