哪个事件在动作事件之后被触发?
问题描述:
我想显示值为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"
是奇怪的。这种方式根本不会被调用,但也许这只是一个粗心的尝试。去掉它。
哇,它的工作原理。但是,当弹出模式对话框时,我可以使后台可访问吗?弹出模式对话框时,背景中的所有内容都将被禁用。 –
这在模态对话框中很正常。通过删除'modal =“true”'使它成为非模态。另请参阅展示示例和文档。 – BalusC
如果我删除了'model =“true”',那么是否可以打开多个模式对话框?其实我试图设计一个类似于使用JSF的聊天系统的Facebook。 –