1

我目前正在使用 IceFaces 1.8,并且一直在尝试找到一种简单的方法来链接 UI 组件上的效果。例如,我在页面右上角有一个“显示帮助”链接。单击时,帮助文本将出现在用户的某些控件下方。我希望通过向下滑动然后突出显示此文本。

我的 bean 上有一个返回 true 或 false 的基本isRenderHelp()方法,并使用它来使用标签fire上的属性呈现效果<ice:effect>,所以它看起来像这样:

<ice:effect effectType="slidedown" fire="#{myBean.renderHelp}">

<ice:effect effectType="slideup" fire="#{!myBean.renderHelp}">

当帮助链接切换 bean 中的 renderHelp 标志时,这会导致帮助部分滑入和滑出。有一个小例外,即在第一次单击链接之前,renderHelp 返回 null 以防止在第一页渲染时触发上滑动画。

现在,我注意到查看 1.8 的展示代码,有一个EffectQueue扩展 Effect 的类。这允许我将多个效果添加到我的 bean 中的队列中,并从getEffect我可以分配给 panelGroupeffect属性的方法返回队列。但是,尽管设置了优先级,但它不会执行队列中的事件。我确定我没有正确使用它,我想知道应该如何使用它。

通常我会为这种类型的事情使用 jQuery,但 UI 使用许多部分提交。我们的页面是通过 Liferay portlet 显示的,因此在任何 partialSubmit 上都会重新呈现视图,从而撤消 jQuery 对 DOM 的任何修改。

那么有没有什么简单的方法可以在 IceFaces 1.8 中链接效果?建议?

4

1 回答 1

3

这是我如何实现 effectQueue 以显示和淡化文本。

private EffectQueue effectQueue;
public Effect getSaveSettingsEffect() {
    return effectQueue;
}
public void fireEffect(ActionListener e) {
    if(effectQueue == null) {
        effectQueue = new EffectQueue("apperAndFade");
        Appear appear = new Appear();
        appear.setDuration(2);
        effectQueue.add(appear);
        Fade fade = new Fade();
        fade.setDuration(3);
        effectQueue.add(fade);
        effectQueue.setTransitory(true);
    }
    effectQueue.setFired(false);
}

小面:

<ice:commandButton value="fireEffect" action="#{bean.fireEffect}"/>
<ice:outputText value="text" style="display: none;" effect="#{bean.effectQueue}"/>
于 2012-08-16T08:14:53.853 回答