gpt4 book ai didi

javascript - 如何更新在 PrimeFaces commandButton 组件的 oncomplete 事件中使用的 javascript 代码

转载 作者:行者123 更新时间:2023-11-28 04:28:41 30 4
gpt4 key购买 nike

我正在使用 Primefaces 来开发我的网站。
我使用 commandButton 组件。当我单击此按钮时,我调用 bean 方法来更新两个 bool 值。根据这两个变量,我显示不同的对话框。

这是我的代码:

    <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 实用程序?有了它你就可以输入是否打开哪个对话框的逻辑。

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)" />

bean :

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>

关于javascript - 如何更新在 PrimeFaces commandButton 组件的 oncomplete 事件中使用的 javascript 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44811719/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com