我正在使用Primefaces来开发我的网站
我使用commandButton
组件。当我点击这个按钮时,我调用我的bean方法来更新两个布尔值。根据这两个变量,我会显示不同的对话框。
这是我的代码:
<p:commandButton action="myBean.method" oncomplete="
if (#{myBean.var1}) {
PF('dialog1').show()
} else {
if (#{myBean.var2}) {
PF('dialog2').show()
} else {
PF('dialog3').show()
}
}" />
有了这个,oncomplete事件总是得到我的bean变量的初始值,而不是更新的那些:(
我不知道这是否是最好的方法;)
答案 0 :(得分:0)
为什么不直接使用Primefaces的RequestContext实用程序?有了它,您可以设置是否打开哪个对话框的逻辑。
<c:forEach items="${requestContext.queueConsumerQuery.consumers}" var="row">
或者如果你真的想在javascript中使用你的逻辑,你也可以使用public void method(){
RequestContext requestContext = RequestContext.getCurrentInstance();
if (var1) {
requestContext.update("PF('dialog1').show()");
} else {
if (var2) {
requestContext.update("PF('dialog2').show()");
} else {
requestContext.update("PF('dialog3').show()");
}
}
回调参数(引自Primefaces用户指南6.0)
在某些情况下,您需要在ajax回调中支持来自bean的值。打回来 参数被序列化为JSON,并作为参数提供给ajax回调。
HTML:
addCallbackParam()
BEAN:
<p:commandButton actionListener="#{bean.validate}"
oncomplete="handleComplete(xhr, status, args)" />
isValid参数将在handleComplete回调中可用;
public void validate() {
//isValid = calculate isValid
RequestContext requestContext = RequestContext.getCurrentInstance();
requestContext.addCallbackParam("isValid", true or false);
}