Jsf 按PrimeFaces'后防止页面刷新;按钮

Jsf 按PrimeFaces'后防止页面刷新;按钮,jsf,button,primefaces,Jsf,Button,Primefaces,我有一个网页,里面有p:tabView和一些p:tab。在其中一个选项卡(不是默认选项卡)中有一个p:commandLink,单击该选项卡可更新并显示一个p:dialog,其中包含一个p:button 我的问题是,单击对话框中的按钮后,页面将刷新并再次显示默认选项卡。相反,我希望按钮在不刷新页面的情况下关闭对话框。换句话说,我希望该按钮在服务器端触发一个操作,而在客户端则像对话框右上角的xclose链接一样运行。我认为您可以使用PrimeFaces v3.0实现它。RC2: @ManagedB

我有一个网页,里面有
p:tabView
和一些
p:tab
。在其中一个选项卡(不是默认选项卡)中有一个
p:commandLink
,单击该选项卡可更新并显示一个
p:dialog
,其中包含一个
p:button


我的问题是,单击对话框中的按钮后,页面将刷新并再次显示默认选项卡。相反,我希望按钮在不刷新页面的情况下关闭对话框。换句话说,我希望该按钮在服务器端触发一个操作,而在客户端则像对话框右上角的
x
close链接一样运行。

我认为您可以使用PrimeFaces v3.0实现它。RC2:


@ManagedBean
@请求范围
公共类MrBean{
公众假期结束(){
RequestContext=RequestContext.getCurrentInstance();
执行(“dialog.hide();”;
//在primefaces>=3.x上,使用context.execute(“PF('dialog').hide();”;
}
}

我认为使用PrimeFaces v3.0.RC2可以实现这一点:


@ManagedBean
@请求范围
公共类MrBean{
公众假期结束(){
RequestContext=RequestContext.getCurrentInstance();
执行(“dialog.hide();”;
//在primefaces>=3.x上,使用context.execute(“PF('dialog').hide();”;
}
}

这是可行的,但这并不是最直接的解决方案,我从您的答案中了解到,使用p:commandButton而不是p:button。这使您可以使用actionListener=“mrBean.doSomething”type=“Button”oncomplete=“dialog.hide()”这就足够了,而无需干扰RequestContext:P haha sry。。我读得太快了,不知道你想在服务器端做这件事。这是可行的,但从你的回答中我知道,这不是最直接的解决方案,用p:commandButton代替p:button。这使您可以使用actionListener=“mrBean.doSomething”type=“Button”oncomplete=“dialog.hide()”这就足够了,而无需干扰RequestContext:P haha sry。。我读得太快了,不知道你想在服务器端做这件事
<p:dialog widgetVar="dialog">  
    <p:commandButton actionListener="#{mrBean.close}" value="Close" />  
</p:dialog>

@ManagedBean
@RequestScoped
public class MrBean {
   public void close() {
      RequestContext context = RequestContext.getCurrentInstance();
      context.execute("dialog.hide();"); 
      //On primefaces >= 3.x use context.execute("PF('dialog').hide();");
   }
}