同一形式的两个primefaces面板不能通过javascript连续关闭
我有两个相同形式的primefaces面板同一形式的两个primefaces面板不能通过javascript连续关闭,javascript,jsf-2,primefaces,managed-bean,Javascript,Jsf 2,Primefaces,Managed Bean,我有两个相同形式的primefaces面板 <p:panel id="pnlOne" widgetVar="pnlOne"> <p:ajax event="close" listener="#{createProduct.cancelAddProductCategory}"/></p:panel>' <p:panel id=pnlTwo" widgetVar="pnlTwo"> <p:ajax event="close" listener="
<p:panel id="pnlOne" widgetVar="pnlOne"> <p:ajax event="close" listener="#{createProduct.cancelAddProductCategory}"/></p:panel>'
<p:panel id=pnlTwo" widgetVar="pnlTwo"> <p:ajax event="close" listener="#{createProduct.cancelAddBrand}"/></p:panel>
javascript函数handleComplete如下
function handleComplete(xhr, status, args) {
if(args.success) {
pnlOne.close();
pnlTwo.close();
} }
问题是这两个面板中只有一个可以关闭。我的目的是相继关闭这两个。但它不起作用。这可能是因为javascript中的第一次关闭执行触发了ajax请求,在调用第二个面板关闭时还没有完成ajax请求吗?有什么想法吗,伙计们。非常感谢你的帮助
这就是解决这个问题的方法。实际上,如果用户没有显示面板,则调用不可见面板的close方法创建了上述场景。所以我只是补充一下 如果my bean中的方法成功并显示两个面板:
RequestContext.getCurrentInstance().addCallbackParam("success", true);
if (pnl1 is visible) {
RequestContext.getCurrentInstance().addCallbackParam("pnlone", true);
}
if (pnl2 is visible) {
RequestContext.getCurrentInstance().addCallbackParam("pnltwo", true);
}
JavaScript:
function handleComplete(xhr, status, args) {
if(args.success) {
if (args.pnlone) {
pnlOne.close();
}
if (args.pnltwo) {
pnlTwo.close();
}
}
}
RequestContext.getCurrentInstance().addCallbackParam("success", true);
if (pnl1 is visible) {
RequestContext.getCurrentInstance().addCallbackParam("pnlone", true);
}
if (pnl2 is visible) {
RequestContext.getCurrentInstance().addCallbackParam("pnltwo", true);
}
function handleComplete(xhr, status, args) {
if(args.success) {
if (args.pnlone) {
pnlOne.close();
}
if (args.pnltwo) {
pnlTwo.close();
}
}
}