我有一个按钮,它应该关闭一个模态面板并渲染几个元素。
是否有一种简单的方法可以检查按下按钮后是否呈现了元素?
示例按钮:
<a4j:commandButton onclick="#{rich:component('modal')}.hide();"
style="background-repeat:no-repeat;width:18px;height:18px;"
image="includes/images/close.gif"
render=":id1 :id2">
<f:setPropertyActionListener target="#{Controller.attribute}" value="false" />
</a4j:commandButton>
答案 0 :(得分:1)
我有另一个按钮,在未渲染的div上没有“工作”。
提交表单时,必须保留所有按钮的父组件的rendered
属性的条件。因此,它不仅应该在使用按钮显示表单的请求期间评估true
,还应该在处理表单提交的请求期间评估true
。最简单的方法是通过@ViewScoped
将支持bean放在视图范围内。
此外,如果您重新呈现的组件又包含<h:form>
,则需要将<h:form>
的客户端ID明确添加到render
属性。例如。当客户ID id1
的组件又有<h:form id="formOfId1">
时。
render=":id1 :id2 :formOfId1"
您可以通过浏览webbrowser开发人员工具集中的HTTP流量来调试这一切(按Chrome / IE9 / Firebug中的F12并查看“网络”部分)。
答案 1 :(得分:0)
我遇到了同样的问题。我的解决方案是在我想要渲染的元素内显示当前时间。
例如,如果要渲染面板,只需在该面板中粘贴以下代码段:
<h:outputText value="#{session.lastAccessedTime}">
<f:convertDateTime pattern="yyyy-MM-dd HH:mm:ss.SSS" type="date" />
</h:outputText>
如果按钮点击后更新时间,那么显然组件已呈现。但情况恰恰相反吗?如果时间没有更新,这是否意味着组件未呈现?如果组件已正确呈现,但显示的时间被冻结到首次访问页面时该怎么办?我对此有一点疑问,所以我刷新了页面,时间也改变了。因此显示的时间不会冻结到初始时刻。
另请注意,有多种方法可以获得时间;如果您不想使用会话时间,可以在辅助bean中设置属性,并将其初始化为新的Date()