我有这段代码
<h:commandLink>
<f:ajax execute="@this"
render=":organizerTable :organizerData :delete @form"
onevent="deleteOrganizer"
listener="#{organizercontroller.deletePossible}"/>
<span id="minus" class="add-on glyphicon glyphicon-minus" aria-hidden="true"></span>
</h:commandLink>
当我点击减号时,应该在onevent
之前执行ajax标签的监听器。通常,情况正好相反。
我试过了:
function deleteOrganizer(data) {
var status = data.status;
if (status === 'complete') {
if (#{organizercontroller.canDelete}) {
alert("Value: " + #{organizercontroller.canDelete});
window.location.href = "#id_delete_popup";
}
else {
alert("false");
}
}
}
现在,侦听器方法将在我的JavaScript函数之前执行,但在#{organizercontroller.deletePossible}
中,我更改canDelete
的值,当我读取它时,此值不正确。
我该如何解决这个问题?
更新:
使用status === 'success'
也无效。
答案 0 :(得分:1)
我似乎找不到在不使用PrimeFaces或OmniFaces Ajax
的情况下在ajax调用中添加回调参数的链接/帖子但你总是可以做一些事情,比如更新包含javascript函数的页面的一部分,你在ajax调用中更新并包含/返回EL
<h:commandLink>
<f:ajax execute="@this"
render=":organizerTable :organizerData :delete @form myCallback"
onevent="deleteOrganizer"
listener="#{organizercontroller.deletePossible}"/>
<span id="minus" class="add-on glyphicon glyphicon-minus" aria-hidden="true"></span>
</h:commandLink>
<ui:fragment id="myCallback">
function myFunction() {
return #{organizercontroller.deletePossible}
}
</ui:fragment>
并在你的ajax响应处理程序中调用该函数
function deleteOrganizer(data) {
var status = data.status;
if (status === 'complete') {
if (myFunction()) {
alert("Value: " + myFunction());
window.location.href = "#id_delete_popup";
}
else {
alert("false");
}
}
}