0

我有一个应该关闭模式面板并呈现几个元素的按钮。

有没有一种简单的方法可以检查按下按钮后是否呈现了元素?

示例按钮:

<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>
4

2 回答 2

1

我有另一个按钮在未渲染的 div 上不起作用。

rendered提交表单时,必须保留所有按钮父组件的属性条件。因此,它不仅应该true在使用按钮呈现表单的请求期间进行评估,还应该true在处理表单提交的请求期间进行评估。最简单的方法是将支持 bean 放在视图范围内@ViewScoped

此外,如果您要重新渲染一个又包含 a 的组件,则<h:form>需要将其客户端 ID 显式添加<h:form>render属性中。例如,当具有客户端 IDid1的组件又具有<h:form id="formOfId1">.

render=":id1 :id2 :formOfId1"

您可以通过浏览网络浏览器的开发人员工具集中的 HTTP 流量来调试这一切(在 Chrome/IE9/Firebug 中按 F12 并检查“网络”部分)。

也可以看看:

于 2012-06-28T13:43:38.903 回答
0

我遇到了同样的问题。我的解决方案是在我想要呈现的元素内显示当前时间。

例如,如果您想渲染一个面板,只需在该面板内粘贴以下代码段:

<h:outputText value="#{session.lastAccessedTime}"> 
    <f:convertDateTime pattern="yyyy-MM-dd HH:mm:ss.SSS" type="date" /> 
</h:outputText> 

如果单击按钮后时间更新,则显然组件已呈现。但相反的情况也成立吗?如果时间没有更新,这是否意味着组件没有被渲染?如果组件被正确渲染,但显示的时间被冻结到页面第一次被访问的那一刻怎么办?我对此有点怀疑,所以我刷新了页面,时间改变了。因此显示的时间不会冻结到初始时刻。

另请注意,有多种获取时间的方法;如果您不喜欢使用会话时间,可以在支持 bean 中设置一个属性,并将其初始化为 new Date()

于 2017-03-07T11:39:56.540 回答