gpt4 book ai didi

jsf - 如何显示 f :viewAction? 的等待指示符

转载 作者:行者123 更新时间:2023-12-01 12:06:16 25 4
gpt4 key购买 nike

我有一个加载对象属性的 JSF 页面(其 id 在 URL 中传递)。加载可以持续更多秒,所以我想显示等待/忙碌指示器或“正在加载...”消息。

这是使用“viewAction”完成的

<f:metadata>
<f:viewAction action="#{myBean.loadParams}" />
</f:metadata>

有没有一种简单的方法可以实现这个目标?我正在使用 Primefaces。

最佳答案

PrimeFaces 已经为此准备了一个组件:<p:outputPanel deferred="true"> .您只需要确保 #{heavyBean}<c:xxx> 在一个组件中引用(因此绝对不在像 <p:outputPanel> 这样的标记文件中,原因解释为 here )而不是其他地方。

...
#{notHeavyBean.property}
...

<p:outputPanel deferred="true">
...
#{heavyBean.property}
...
</p:outputPanel>

...
#{anotherNotHeavyBean.property}
...

然后你就可以在它的@PostConstruct中做繁重的工作了方法。做你最初在 <f:viewAction> 中做的工作在@PostConstruct里面.

@Named
@ViewScoped
public class HeavyBean implements Serializable {

@PostConstruct
public void init() {
// Heavy job here.
}

// ...
}

如果您需要访问其他 bean 的属性,只需 @Inject HeavyBean 中的那些 bean .例如。如果您需要 ID View 参数:

<f:viewParam name="id" value="#{notHeavyBean.id}" />

@Inject
private NotHeavyBean notHeavyBean; // Also @ViewScoped.

@PostConstruct
public void init() {
Long id = notHeavyBean.getId();
// Heavy job here.
}

<p:outputPanel>已经带有动画 gif。您可以轻松customize它通过 CSS。

.ui-outputpanel-loading {
background-image: url("another.gif");
}

关于jsf - 如何显示 f :viewAction? 的等待指示符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56495201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com