【发布时间】:2018-03-29 15:57:53
【问题描述】:
目前我正在尝试打开一个模式对话框,其中包含一个填充了来自支持 bean 的值的表单。由于每个按钮都与表中的条目链接,因此使用按钮中提供的对象加载 bean(或应该加载,因为目前不工作)。按钮的当前代码如下。
modal和触发事件的按钮在同一个页面,但是这个页面有2个bean。一个用于单击按钮后应立即显示的模式(用于修改给定对象),另一个用于打印主窗口中的所有数据。
基本上,我要做的是实例化一个 bean,将给定对象通过请求传递给第二个 bean 具有的 @PostConstruct 方法,并在所有过程完成后显示模态,刷新模态并然后显示出来。
<b:button value=""
icon-size="2x"
onclick="#{bean.dummy()}"
style="height: 64px; width: 64px; float: right; border: none; margin-top: 25px; border-radius: 0px;"
oncomplete="$('.config_modal').modal()">
<f:param name="action" value="#{bean.value}" />
</b:button>
除了该代码之外,我还尝试了下面列出的一些修改。上一个是最新的。
- 以前,JS
modal()调用位于“onclick”事件中。 - 添加了一个“虚拟”方法,因为模态对话框从未与实际代码一起显示,因为我认为我需要一种触发器。
- 这不是
b:commandButton,因为它会刷新整个页面并且永远不会显示对话框。
【问题讨论】:
-
您可以试试
oncomplete="$('.config_modal').modal('true');"并确保b:modal的styleClass 为config_modal 即b:modal id="config_modal" styleClass="config_modal" -
但在页面重新加载后不会触发 oncomplete。你需要使用ajax。例如
<h:form><b:commandButton value="click" action="#{bean.dummy}" oncomplete="$('.config_modal').modal('true');"><f:ajax render="@form"/></b:commandButton></h:form>。您想要重绘的页面的任何部分都必须在<h:form>内 -
@MitchBroadhead 感谢 Mitch 的回复,我按照您在第二条评论中的建议进行了操作,但仍然无法正常工作,我仍然不知道自己做错了什么……价值是在另一个 bean 中被正确接收。好的,在我的案例中发现了错字,从 .modal() 内部删除了 'true' ,现在它可以工作了。非常感谢!回复一个答案,以便我接受。
-
很高兴它现在正在工作。我已按照您的建议复制评论作为答案
标签: jsf modal-dialog bootsfaces ajax-update