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

时间:2014-02-17 11:20:59

标签: java jsf xhtml

单击按钮时不显示警报消息。如果我点击一个按钮,它应该显示警报消息为成功,延迟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 个答案:

答案 0 :(得分:0)

我想指出的一些事情。 (这可能不是答案,但我想提出一些可以帮助您解决问题的重构内容。)

<强> 1 即可。如果我点击一个按钮,它应该显示警告消息为 3分钟延迟

但根据你的代码,它是:

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

<强> 2 即可。 myvar是全局定义的,分配给函数myFunction()message。我认为您的代码中没有使用myvar

修改

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

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

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