当我在 xhtml 中单击 h:命令按钮时,警报消息不显示



单击按钮时不显示警报消息。 如果我单击一个按钮,它应该显示警报消息为成功,延迟 3 分钟。

当我单击按钮时,第一次它没有响应第二次,只有它从 bean 获取值。为什么它不是第一次加载的原因是什么?

XHTML 代码 :

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html">
    <h:head>
        <title>Facelet Title</title>
        <script>
             var myVar;
             function myFunction() {
                 myVar = setTimeout(function(){message();},3000);
             }
             function message(){
                 myVar=setTimeout(function() {
                     if(#{mytest.count}===0) {
                         alert("Fails");
                     }
                     else {
                         alert("Success");
                     }
                },3000);
             }
        </script>
    </h:head>
    <h:body> 
        <h:form>
            <h:commandButton onclick="message();" action="#{mytest.func}"     value="click"/>
        </h:form>
    </h:body>
</html>

托管 Bean 代码 :

package com.display;
import javax.faces.bean.ManagedBean;
@ManagedBean
public class Mytest {
    private int count=0;
    public int getCount() {
        return count;
    }
    public void setCount(int count) {
        this.count = count;
    }
    public void func(){   
        this.count=1;
        System.out.println("function called");
        System.out.println("count value is -->"+count);
    }
}
我想

指出的几件事。(这可能不是答案,但我想提出一些重构的东西来帮助你解决问题。

1.如果我单击一个按钮,它应该显示警报消息为成功,延迟3分钟。

但根据您的代码,它是:

myVar = setTimeout(function(){message();},3000); //3 seconds (1000 ms = 1 seconds)

2. myvar是全局定义的,分配给函数myFunction()message。我在您的代码中没有看到任何myvar用途。

编辑

基本上,你的javascript代码在进入你的bean类之前被调用。 检查是否可以在命令按钮中oncomplete任何方法。

或者,您可以将<f:ajax>包裹在<h:commandButton>中,例如,

<f:ajax onevent=myFunction();/>

最新更新