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