我有一个用JSF进行验证的表单,需要在弹出式中打开。当我提交表单时,我调用bean方法,数据发送到后端,如果成功,那么弹出窗口应该自动关闭。
数据存储成功,我需要从bean方法返回什么,以便弹出窗口自动关闭。
还有,提交表单后我们如何得到响应?这可能吗?
下面的代码可以用来根据验证保持显示/隐藏弹出窗口:
<a4j:commandButton value="Create Quote" id="createQuote" action="#{quoteAction.createQuote}"
immediate="false"
execute="envType country partner @this"
render="envType country partner"
oncomplete="if (#{facesContext.maximumSeverity == null}) {#{rich:component('quoteResultPanel')}.show();}">
</a4j:commandButton>
#{facesContext.maximumSeverity == null}
将验证任何验证消息,如果这不是null,那么用户将不会显示在弹出窗口中,否则用户将显示在弹出窗口中。你甚至可以用另一种方式使用它,比如只在没有验证消息时关闭弹出窗口,否则保持弹出窗口和消息。
oncomplete="if (#{facesContext.maximumSeverity == null}) {#{rich:component('quoteResultPanel')}.hide();}"
看这里使用JavaServer Faces (JSF)弹出窗口的例子。请注意,MyFaces Orchestra支持开箱即用的多窗口应用程序。
如果你正在使用RichFaces,你可能要考虑使用富模态窗口而不是普通的弹出窗口。
如果你的表单是一个<a4j:form>
,你可以使用一个<a4j:commandButton>
ajax提交,并提供一个oncomplete
属性给它javascript成功提交后执行。这个javascript可以用你的模态id作为参数来调用Richfaces.hideModalPanel('pnl');
。