JSF2 commandButton动作执行顺序

时间:2013-03-04 17:31:08

标签: jsf-2

我在blur事件上有一个带Ajax功能的输入字段,在我的页面上有一个commandButton。如果我修改输入字段上的值并单击commandButton而不显示,将首先调用哪个方法?听众附加到输入字段或按钮?

根据我迄今为止的经验,首先调用的那个会有所不同,这会导致我的应用程序出现问题。我希望始终首先调用输入字段的监听器。

有谁知道如何处理这种情况?

更新 感谢您的回复,经过多次故障排除后,我注意到已经提到过首先调用ajax监听器,但在极少数情况下,在监听器方法处理完一些所需逻辑之前调用了按钮操作。在我的情况下,我需要侦听器方法在调用按钮操作之前完成处理,否则可能会发生一些意外的行为。有可能这样做吗?

1 个答案:

答案 0 :(得分:1)

请记住,JSF中的所有内容都会转换回HTML和JavaScript。因此这是一个简单的测试:

<input type="text" id="field1" onblur="blurFunction();">
<br/>
<button onclick="clickFunction()">Click</button>

将告诉您需要了解的内容。通过我所做的测试,blur首先出现。

如果您遇到此问题,为什么不点击按钮进行简单检查,以确保运行blur上需要运行的内容?

修改

根据编辑过的问题,您可以随时在blur事件上设置标记。

function blurFunction() {
    document.myVar = 1;
    //... rest of the function
}

function clickEvent() {
    if(document.myVar = 1) {
        //wait
    } else {
        //do your click event
    }
}

不建议将变量放在全局范围内。这仅仅是如何做到这一点的一个例子。