【发布时间】:2019-10-03 14:28:25
【问题描述】:
问题是后面的Bean Methode被多次调用
我已经阅读了@BalusC 的这个答案
JSF 是一种服务器端语言,它根据 HTTP 请求在网络服务器上运行,并生成 HTML/CSS/JS 代码,这些代码与 HTTP 响应一起返回。在生成 HTML 输出期间,所有 ${} 和 #{} 形式的 EL 表达式都将在服务器端执行。 JavaScript 是一种客户端语言,它在网络浏览器上运行并在 HTML DOM 树上工作。 HTML onclick 属性应指定一个 JavaScript 函数,该函数将在客户端针对特定 HTML DOM 事件执行。
所以我明白为什么我的背部被多次调用,所以我该如何解决这个问题
这是我的背被 Methode
@ManagedBean (name="villeBean)"
@ViewScoped
public class Villes {
public String listeVilles{
return dao.listeVilles();
}
}
这是我的 js 代码
if(localStorage['ville'] == null || localStorage['date']==null){
localStorage.setItem('date',new Date());
localStorage.setItem('ville',#{villeBean.listeVilles()});
}
else{
var oldDate = new Date(localStorage['date']).getTime();;
var currentDate = new Date().getTime();
var distance = currentDate - oldDate ;
var days = Math.floor(distance / (1000 * 60 * 60 * 24));
if (days >= 15){
localStorage.setItem('date',date);
localStorage.setItem('ville',#{villeBean.listeVilles()});
}
}
问题是后面的方法被调用了 2 次p>
【问题讨论】:
-
@Ricardo 我的 java 脚本代码调用了方法,问题是在生成 HTML 输出期间,所有以 ${} 和 #{} 形式的 EL 表达式都将在服务器端执行。所以后面的方法执行2次就像java脚本条件“不起作用”
-
这是不正确的,您的 javascript 代码没有调用 bean。渲染页面(包括 javascript 代码)时,javascript 会填充 bean 调用的返回值。 listVilles() 的值将与呈现的页面一起传递。如果您不喜欢多次调用,请执行
if(value==null) value=dao.listVilles(); return value;之类的操作
标签: javascript jsf el