哪个事件在动作事件之后被触发?

问题描述:

我想显示值为chatBean.selectedUser的模态弹出框的标题。发生的事情是onclick事件在action事件之前被触发,因此当触发onclick事件时页面不刷新。因此,我无法获取模态弹出的标题,作为chatBean.selectedUser中包含的值。无论如何,我可以在页面提交之后显示值为chatbean.selectedUser的模态弹出框的标题?哪个事件在动作事件之后被触发?

这里是视图的相关部分:

<h:form> 
    <p:selectOneMenu value="#{chatBean.selectedUser}" id="select"> 
     <f:selectItems value="#{chatBean.friendList}" var="users" itemLabel="#{users.firstName}" itemValue="#{users.firstName}"/> 
    </p:selectOneMenu> 
    <p:commandButton id="basic" value="Basic" onclick="dlg.show()" type="button" action="#{chatBean.refresh}"></p:commandButton>  
    <p:dialog id="modalDialog" header="#{chatBean.selectedUser}" widgetVar="dlg" modal="true" height="100"> 
     <h:outputText value="This is a Modal Dialog." /> 
     <h:inputText></h:inputText> 
    </p:dialog> 
</h:form> 

您应该显示该对话框时,才完成了动作,而不是之前。改为使用oncomplete属性。

<p:commandButton ... oncomplete="dlg.show()" /> 

不要忘记在打开它之前明确地更新对话框的内容。我没有看到你的代码中的任何地方。也许你正在使用RequestContext#update()什么的,但通常你会用update这个属性。

<p:commandButton ... update="modelDialog" oncomplete="dlg.show()" /> 

此外,type="button"是奇怪的。这种方式根本不会被调用,但也许这只是一个粗心的尝试。去掉它。

+0

哇,它的工作原理。但是,当弹出模式对话框时,我可以使后台可访问吗?弹出模式对话框时,背景中的所有内容都将被禁用。 –

+0

这在模态对话框中很正常。通过删除'modal =“true”'使它成为非模态。另请参阅展示示例和文档。 – BalusC

+0

如果我删除了'model =“true”',那么是否可以打开多个模式对话框?其实我试图设计一个类似于使用JSF的聊天系统的Facebook。 –