通过Ajax播放组件的可见性时
setOutputMarkupPlaceholderTag(true),
setOutputMarkupId(true)
setOutputMarkupPlaceholderTag(true)将自动暗示
setOutputMarkupId(true)。
这样做的原因是,当通过Ajax刷新组件(将其添加到
AjaxRequestTarget)时,Wicket会在Ajax响应中返回刷新的标记,因此将通过JS-
DOM API通过Ajax回调方法将其替换。因此,要使替换接收到的标记的JS函数正常工作,必须要引用要替换的DOM节点(HTML
id属性)。这就是为什么
setOutputMarkupId(true)需要。
更改可见性时,如果组件不可见,则Wicket不会为该组件生成任何标记,这很不错,但是有一个缺点。如果一个不可见的组件在随后的ajax请求中变为可见,则其标记将有效地返回到Ajax响应中。但是,由于该组件不可见,所以它甚至不存在于原始标记中,并且不可能在回调时替换DOM节点。这就是
setOutputMarkupPlaceholderTag(true)方法开始起作用的地方,将
可能不可见的 组件包装在占位符标记(即
<div>)中,该标记将始终使用适当的HTML
id属性呈现。



