如何更新我在 PrimeFaces commandButton 组件的 oncomplete 事件上使用的 javascript 代码
How do I update my javascript code that I used on oncomplete event of PrimeFaces commandButton component
我正在使用 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 变量的初始值,而不是更新的变量:(
而且我不知道这是否是最好的方法 ;)
为什么不直接使用 Primefaces 的 RequestContext 实用程序?有了它就可以把是否打开哪个dialog的逻辑放上去
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()");
}
}
或者如果你真的想在 javascript 中使用你的逻辑,你也可以使用 addCallbackParam()
回调参数(引自 Primefaces 用户指南 6.0)
在某些情况下,您可能需要 ajax 回调中的支持 bean 的值。打回来
参数被序列化为 JSON 并在 ajax 回调中作为参数提供。
HTML:
<p:commandButton actionListener="#{bean.validate}"
oncomplete="handleComplete(xhr, status, args)" />
豆类:
public void validate() {
//isValid = calculate isValid
RequestContext requestContext = RequestContext.getCurrentInstance();
requestContext.addCallbackParam("isValid", true or false);
}
isValid 参数将在 handleComplete 回调中可用;
<script type="text/javascript">
function handleComplete(xhr, status, args) {
var isValid = args.isValid;
}
</script>
我正在使用 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 变量的初始值,而不是更新的变量:(
而且我不知道这是否是最好的方法 ;)
为什么不直接使用 Primefaces 的 RequestContext 实用程序?有了它就可以把是否打开哪个dialog的逻辑放上去
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()");
}
}
或者如果你真的想在 javascript 中使用你的逻辑,你也可以使用 addCallbackParam()
回调参数(引自 Primefaces 用户指南 6.0)
在某些情况下,您可能需要 ajax 回调中的支持 bean 的值。打回来 参数被序列化为 JSON 并在 ajax 回调中作为参数提供。
HTML:
<p:commandButton actionListener="#{bean.validate}"
oncomplete="handleComplete(xhr, status, args)" />
豆类:
public void validate() {
//isValid = calculate isValid
RequestContext requestContext = RequestContext.getCurrentInstance();
requestContext.addCallbackParam("isValid", true or false);
}
isValid 参数将在 handleComplete 回调中可用;
<script type="text/javascript">
function handleComplete(xhr, status, args) {
var isValid = args.isValid;
}
</script>