java - a4j :commandLink with onClick return true or false not properly working

标签 java jsf richfaces

我的代码如下,

<a4j:commandLink  oncomplete="openSignatureModel();" id="requestText"  reRender="sigPassword"  title="Send Prescription"
actionListener="#{patientNotePresBackingBean.sendPrescriptionId}"
onclick="return pharmacyCheck('#{row}');"> 
<f:param name="sendPrescriptionId" value="#{patientNotePrescriptionVar.id}" />
<f:param name="processOfPrescription" value="Send" />
<h:graphicImage value="/images/send-prescribe.png" style="border:0;"></h:graphicImage>
</a4j:commandLink>

我的 java 脚本就像...

function pharmacyCheck(rowID) {
    var a = document.getElementById("prescriptionId:patientNotePresListId:"+rowID+":pharmacyRcopiaId");
    if(a.value == -1) {
        alert("Please select Pharmacy");
        return false;
    } else {
        return true;
    }

}

实际上,当它返回 true 时,它​​应该调用 patientNotePresBackingBean.sendPrescriptionId 对吗?

但调用方式不一样....有什么原因吗?

最佳答案

当您看到生成的 HTML 时,按钮/链接的 onclick 方法中会出现类似这样的内容:

onclick="return pharmacyCheck('#{row}');;A4J.AJAX.Submit(..."

所以onclick是一开始就返回,ajax提交不会发送。要解决您的问题,请以这种方式使用您的 javascript 方法:

<a4j:commandLink onclick="if (!pharmacyCheck('#{row}')) return false;" ...>

编辑:进一步解释:

当你有这样一段 JavaScript 代码时:

function X() {
    return false;
    alert("this alert won't be shown =(");
}

如前所述,警报永远不会触发。因此,检查生成的 HTML 是否有 onclick(特别格式化以查看相似之处):

onclick="
    return functionX();
    alert('this alert will not display either X_x');
    A4J.AJAX.Submit(...
"

onclick 代码不会触发,因为您在执行代码之前返回了一些东西。更改只会拦截 false 值并返回,如果您的方法返回 true,将执行其余代码。

注意:默认情况下,任何不返回任何内容的 javascript 方法都会返回 false。

关于java - a4j :commandLink with onClick return true or false not properly working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11454683/

相关文章:

java - flash.discard 有什么作用?与 flash.clear() 有什么区别?

internet-explorer - 使用 SSL 与 JBoss AS7 的连接中断(Richfaces 页面)

jsf - 如何在弹出面板中提交值?

java - 如何访问抽象类的 Hashmap?

java - Hashmap 和 EnumMap 的不同通用类型删除行为

java - pager taglib 没有按照记录重命名导出的 url 变量

jsf - JSF转换器和验证器的调用序列

java - 更改 ace 中浏览的默认按钮名称 :FileEntry

jsf - 需要 Vaadin 的反馈

jsf - 配置 RichFaces : java. lang.ClassNotFoundException : org. ajax4jsf.Filter