我是JSF,Primefaces和Ajax的新手,所以我要做的是更新一个面板,如果我的后端bean的验证是真的,并且当它是假的时更新另一个面板.
<h:panelGroup id="panel1"> ... <h:commandButton id="btn1" action="#{bean.validate}"> <p:ajax process="panel1" update="panel1"/> </h:commandButton> </h:panelGroup> <h:panelGroup id="panel2"> ... </h:panelGroup>
后豆:
public void validate() { ... if(validatecondition) { // Update panel 1 } else { // update panel 2 } }
那么使用ajax可以做到这一点吗?提前致谢!!
解决方法
当然,有两种方式.既然你正在使用primefaces,那么两种选择就更容易了
>使用RequestContext对象有选择地更新面板.您的代码将如下所示:
public void validate() { RequestContext context = RequestContext.getCurrentInstance(); if(validatecondition) { context.update("panel1"); } else { context.update("panel2"); } }
> JSF PartialViewContext
可以做同样的工作,只需要多一点打字
FacesContext ctxt = FacesContext.getCurrentInstance(); //get your hands on the current request context if(validatecondition) { ctxt.getPartialViewContext().getRenderIds().add("panel1"); } else { ctxt.getPartialViewContext().getRenderIds().add("panel2"); }
getRenderIds()调用返回一个组件ID列表,JSF将在响应完成时通过ajax更新.这基本上是primefaces中的RequestContext将在幕后进行的.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。