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