【发布时间】:2013-02-04 15:34:13
【问题描述】:
JSF 2.0、Mojarra 2.0.1、PrimeFaces 3.4.1
有类似的问题,但我需要某事。别的; javascript 函数必须等待支持 bean 方法,该方法正在填充要从 js 函数中提取的变量。我想说的是:
<p:commandLink action="#{statusBean.getStatuses}" oncomplete="afterLoad()"/>
假设 js 函数只是获取值并将其打印到屏幕上。
function afterLoad() {
alert("#{statusBean.size}");
}
这是生日孩子:
@ManagedBean
@ViewScoped
public class StatusBean {
public int size=0;
List<Status> panelList = new ArrayList<Status>();
public void getStatuses() {
this.panelList = fillList();
this.size = panelList.size(); //Assuming 3
}
//getter and setters
}
所以函数会提醒大小为 0,这是它的初始值,而我们期望看到 3。
它是如何工作的:如果我将 @PostConstruct 注释添加到 bean 的头部,它肯定会得到正确的大小,因为 bean 在页面加载之前就已经构建好了。但这意味着多余的进程,在 commandlink 操作之后才需要的值。那么如何推迟js功能呢?有什么想法吗?
【问题讨论】:
-
Mojarra 2.0.1 是古老的。它已经3岁多了。考虑升级。当前的 2.1.19 版本有很多很多的错误修复和改进。
-
@BalusC 好的,我将查看版本差异,两个答案都是正确的并且有效,谢谢你和 partlov,但我无法决定应该选择哪一个作为答案。我应该选择先到先得吗?但是服务器说你在 1 分钟前回答了但是当我最后一次看时它说 partlov 先回答了。是同一时间吗?
-
只选择对您最有帮助的一个。到目前为止发布的答案并未提供完全相同的信息。至于确切的答案时间戳,只需检查“已回答”时间戳的工具提示即可。但是您在选择答案时不应该考虑这一点。这只是模拟 FGITW。
标签: javascript jsf jsf-2