为什么zk渲染列表框的第二个tbody?

时间:2014-08-15 16:54:49

标签: java html zk

我遇到一个问题,zk 3.6.3正在为<tbody>呈现第二个Listbox标记。实际上,第一个呈现的<tbody>标签是让我遇到问题的标签。它的css样式设置为visibility:hidden;height:0px,Opera 12和IE 11为它渲染了一个大的空白空间。所以在浏览器中我看到了表头,这是一个空的空格,然后是列表框的实际行。

zkoss渲染的有问题的代码包含在第53-63行的org.zkoss.zkmax.zul.render.ListboxDefault中。

如何防止zkoss或浏览器呈现此空白区域?

2 个答案:

答案 0 :(得分:2)

嗯,总有一个解决方案,也许“黑客”解决方案在这里是最好的:

该班级的

班级重写

  1. 创建该包并创建该类(完全相同的包和类名)。
  2. 将链接中的代码复制到您的班级。
  3. 更改代码,我建议尝试删除完整的if。 =&GT;看看它给出的结果(测试你的列表框!)
  4. 当您想到升级ZK版本时:不要忘记删除或更新课程!!!
  5. 如果删除无效,请尝试更改样式,...

    另一方面,如果可以更新ZK版本,你应该试试。
    您使用的版本较旧,不支持较新的浏览器。

答案 1 :(得分:1)

第一个tbody包含列表标题(不,我不知道他们为什么不使用thead)。如果你没有在列表中添加一个,那么CSS visibility:hidden;height:0px应该使它在屏幕上不可见,这对我有用。

我的猜测是,在应用程序的某个地方,你有CSS规则覆盖这种风格。因此,下一步是启动Web开发人员工具并检查实际应用的CSS样式。

或者,您可以为列表框指定自定义类setSclass("hiddenheader"),然后像这样使用CSS:

table.hiddenheader tbody:first-child { display: none; }

(注意:我没有对此进行测试; ZK可能会为样式添加一些前缀,因此您可能需要调整代码,但示例应该让您入门。)